avcodec/pnmdec: Check input size against width*height assuming at least 1bit per pixel

Fixes: Timeout
Fixes: 481427018/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_PHM_DEC_fuzzer-6315469467615232
Fixes: 485843949/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_PHM_DEC_fuzzer-4753439270961152

Found-by:  continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Michael Niedermayer
2026-02-07 00:35:29 +01:00
parent 1c2a300f66
commit d707a4af80

View File

@@ -63,6 +63,9 @@ static int pnm_decode_frame(AVCodecContext *avctx, AVFrame *p,
if (avctx->skip_frame >= AVDISCARD_ALL)
return avpkt->size;
if (avctx->width * avctx->height / 8 > s->bytestream_end - s->bytestream)
return AVERROR_INVALIDDATA;
if ((ret = ff_get_buffer(avctx, p, 0)) < 0)
return ret;
avctx->bits_per_raw_sample = av_log2(s->maxval) + 1;