diff --git a/libavcodec/pnmdec.c b/libavcodec/pnmdec.c index a7b91fd50933979c16fff8e4351122720dfd2380..df9b5ee2e486ffc8f331c68ffa594767c16ae953 100644 --- a/libavcodec/pnmdec.c +++ b/libavcodec/pnmdec.c @@ -66,11 +66,15 @@ static int pnm_decode_frame(AVCodecContext *avctx, void *data, n = avctx->width * 8; components=4; sample_len=16; + if (s->maxval < 65535) + upgrade = 2; goto do_read; case AV_PIX_FMT_RGB48: n = avctx->width * 6; components=3; sample_len=16; + if (s->maxval < 65535) + upgrade = 2; goto do_read; case AV_PIX_FMT_RGBA: n = avctx->width * 4; @@ -81,6 +85,8 @@ static int pnm_decode_frame(AVCodecContext *avctx, void *data, n = avctx->width * 3; components=3; sample_len=8; + if (s->maxval < 255) + upgrade = 1; goto do_read; case AV_PIX_FMT_GRAY8: n = avctx->width;