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 b0d3873085
commit 4c246c65bf

View File

@@ -495,9 +495,12 @@ unk_pixfmt:
} }
if (s->ls) { if (s->ls) {
s->upscale_h = s->upscale_v = 0; s->upscale_h = s->upscale_v = 0;
if (s->nb_components > 1) if (s->nb_components == 3) {
s->avctx->pix_fmt = AV_PIX_FMT_RGB24; s->avctx->pix_fmt = AV_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 = AV_PIX_FMT_GRAY8; s->avctx->pix_fmt = AV_PIX_FMT_GRAY8;
else else
s->avctx->pix_fmt = AV_PIX_FMT_GRAY16; s->avctx->pix_fmt = AV_PIX_FMT_GRAY16;