shorten: set invalid channels count to 0
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 5 Mar 2013 14:13:04 +0000 (15:13 +0100)
committerLuca Barbato <lu_zero@gentoo.org>
Tue, 12 Mar 2013 19:05:39 +0000 (20:05 +0100)
Prevent the loop shorten_decode_close from writing and freeing out of
the array boundary.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
CC: libav-stable@libav.org
(cherry picked from commit c10da30d8426a1f681d99a780b6e311f7fb4e5c5)
(cherry picked from commit 21d568be179c54a1596d1377b4da7fbe755bfe7f)

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
libavcodec/shorten.c

index 83777fb..a8b5713 100644 (file)
@@ -341,6 +341,7 @@ static int read_header(ShortenContext *s)
     s->channels = get_uint(s, CHANSIZE);
     if (s->channels > MAX_CHANNELS) {
         av_log(s->avctx, AV_LOG_ERROR, "too many channels: %d\n", s->channels);
+        s->channels = 0;
         return -1;
     }
     s->avctx->channels = s->channels;