avcodec/h264: Undefined behavior (left shift of 12852653 by 8 places cannot be repres...
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 8 Oct 2014 02:23:03 +0000 (04:23 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 8 Oct 2014 03:35:10 +0000 (05:35 +0200)
Fixes: asan_heap-oob_84f75d_8_asan_heap-oob_a2a00a_341_mbc.ts

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/h264.c

index c4f4b05..0405779 100644 (file)
@@ -1358,7 +1358,7 @@ static int get_avc_nalsize(H264Context *h, const uint8_t *buf,
         return -1;
 
     for (i = 0; i < h->nal_length_size; i++)
-        nalsize = (nalsize << 8) | buf[(*buf_index)++];
+        nalsize = ((unsigned)nalsize << 8) | buf[(*buf_index)++];
     if (nalsize <= 0 || nalsize > buf_size - *buf_index) {
         av_log(h->avctx, AV_LOG_ERROR,
                "AVC: nal size %d\n", nalsize);