# HG changeset patch # User jbr # Date 1221407459 0 # Node ID 48d00b406a26e4fd60da33e0b7e05908bbe495d7 # Parent f75806078d468532d7ac71b13b90d7d93790dad5 Return error when trying to decode non-grayscale 16-bit PNM images. Fixes issue 566. diff -r f75806078d46 -r 48d00b406a26 pnm.c --- a/pnm.c Sat Sep 13 20:52:57 2008 +0000 +++ b/pnm.c Sun Sep 14 15:50:59 2008 +0000 @@ -106,7 +106,13 @@ else avctx->pix_fmt = PIX_FMT_GRAY8; } else if (depth == 3) { + if (maxval < 256) { avctx->pix_fmt = PIX_FMT_RGB24; + } else { + av_log(avctx, AV_LOG_ERROR, "16-bit components are only supported for grayscale\n"); + avctx->pix_fmt = PIX_FMT_NONE; + return -1; + } } else if (depth == 4) { avctx->pix_fmt = PIX_FMT_RGB32; } else { @@ -127,10 +133,16 @@ if (avctx->pix_fmt != PIX_FMT_MONOWHITE) { pnm_get(s, buf1, sizeof(buf1)); s->maxval = atoi(buf1); - if(s->maxval >= 256 && avctx->pix_fmt == PIX_FMT_GRAY8) { + if (s->maxval >= 256) { + if (avctx->pix_fmt == PIX_FMT_GRAY8) { avctx->pix_fmt = PIX_FMT_GRAY16BE; if (s->maxval != 65535) avctx->pix_fmt = PIX_FMT_GRAY16; + } else { + av_log(avctx, AV_LOG_ERROR, "16-bit components are only supported for grayscale\n"); + avctx->pix_fmt = PIX_FMT_NONE; + return -1; + } } } /* more check if YUV420 */