]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
prevent infinite loop and memcpy of negative amounts
authormichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 13 Oct 2007 12:25:31 +0000 (12:25 +0000)
committermichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 13 Oct 2007 12:25:31 +0000 (12:25 +0000)
fixes issue194

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@10726 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/aac_parser.c
libavcodec/ac3_parser.c

index d6cf2693fcaa47b126ac3fc771a6258cc0c5a484..ac806931ecef550ee263045efc3132159f18ea8f 100644 (file)
@@ -67,6 +67,9 @@ static int aac_sync(const uint8_t *buf, int *channels, int *sample_rate,
     skip_bits1(&bits);          /* copyright_identification_bit */
     skip_bits1(&bits);          /* copyright_identification_start */
     size = get_bits(&bits, 13); /* aac_frame_length */
+    if(size < AAC_HEADER_SIZE)
+        return 0;
+
     skip_bits(&bits, 11);       /* adts_buffer_fullness */
     rdb = get_bits(&bits, 2);   /* number_of_raw_data_blocks_in_frame */
 
index d97c86e01b0fbe29b99951cd999949d88ef9181b..034a0bdf268b3f6fbe9d9c58e6889c5ade82abe9 100644 (file)
@@ -114,6 +114,9 @@ static int ac3_sync(const uint8_t *buf, int *channels, int *sample_rate,
             return 0;   /* Currently don't support additional streams */
 
         frmsiz = get_bits(&bits, 11) + 1;
+        if(frmsiz*2 < AC3_HEADER_SIZE)
+            return 0;
+
         fscod = get_bits(&bits, 2);
         if (fscod == 3) {
             fscod2 = get_bits(&bits, 2);