aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-08-21 04:40:50 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-08-29 02:13:25 +0200
commite2eb0d23269043357cdab90a9fca4fca2895d2ac (patch)
tree2bdbedb098bf05a37e3416267a8ea4bfd6bf3eda
parentacac6b0d6951f86d5db8aaeaeb970743d1907852 (diff)
downloadffmpeg-e2eb0d23269043357cdab90a9fca4fca2895d2ac.tar.gz
avcodec/jpeg2000dec: Check cdx/y values more carefully
Some invalid values where not handled correctly in the later pixel format matching code. Fixes out of array accesses Fixes Ticket2848 Found-by: Piotr Bandurski <ami_stuff@o2.pl> Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit 8bb11c3ca77b52e05a9ed1496a65f8a76e6e2d8f) Conflicts: libavcodec/jpeg2000dec.c
-rw-r--r--libavcodec/jpeg2000dec.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c
index 294245dfad..2c00a694a4 100644
--- a/libavcodec/jpeg2000dec.c
+++ b/libavcodec/jpeg2000dec.c
@@ -273,6 +273,11 @@ static int get_siz(Jpeg2000DecoderContext *s)
s->sgnd[i] = !!(x & 0x80);
s->cdx[i] = bytestream2_get_byteu(&s->g);
s->cdy[i] = bytestream2_get_byteu(&s->g);
+ if ( !s->cdx[i] || s->cdx[i] == 3 || s->cdx[i] > 4
+ || !s->cdy[i] || s->cdy[i] == 3 || s->cdy[i] > 4) {
+ av_log(s->avctx, AV_LOG_ERROR, "Invalid sample seperation\n");
+ return AVERROR_INVALIDDATA;
+ }
log2_chroma_wh |= s->cdy[i] >> 1 << i * 4 | s->cdx[i] >> 1 << i * 4 + 2;
}