avcodec/mjpegdec: Check number of components for JPEG-LS

Fixes out of array accesses
Fixes: asan_heap-oob_1c1a4ea_1242_cov_2274415971_TESTcmyk.jpg

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit fabbfaa095)

Conflicts:

	libavcodec/mjpegdec.c
This commit is contained in:
Michael Niedermayer
2015-02-04 20:48:30 +01:00
parent c68fe8ac8b
commit 75b0cfcf10

View File

@@ -347,9 +347,12 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
return -1;
}
if(s->ls){
if(s->nb_components > 1)
if(s->nb_components == 3) {
s->avctx->pix_fmt = PIX_FMT_RGB24;
else if(s->bits <= 8)
} else if (s->nb_components != 1) {
av_log(s->avctx, AV_LOG_ERROR, "Unsupported number of components %d\n", s->nb_components);
return AVERROR_PATCHWELCOME;
} else if (s->bits <= 8)
s->avctx->pix_fmt = PIX_FMT_GRAY8;
else
s->avctx->pix_fmt = PIX_FMT_GRAY16;