]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Ok, ts demuxer is more complicated than I thought
authorbcoudurier <bcoudurier@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sun, 12 Apr 2009 02:19:40 +0000 (02:19 +0000)
committerbcoudurier <bcoudurier@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sun, 12 Apr 2009 02:19:40 +0000 (02:19 +0000)
Revert r18454 and fix correctly #700
Stop parsing if end of buffer is reached while reading
patch by Björn Axelsson, bjorn dot axelsson at intinor dot se

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

libavformat/mpegts.c

index 7468a023dff397067e19047444652ce97fc18164..226f5b28cba501999c4a3b879bcc6415969af39d 100644 (file)
@@ -555,7 +555,7 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
         if (desc_list_len < 0)
             break;
         desc_list_end = p + desc_list_len;
-        if (desc_list_end >= p_end)
+        if (desc_list_end > p_end)
             break;
         for(;;) {
             desc_tag = get8(&p, desc_list_end);
@@ -571,6 +571,8 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
                 }
             }
             desc_len = get8(&p, desc_list_end);
+            if (desc_len < 0)
+                break;
             desc_end = p + desc_len;
             if (desc_end > desc_list_end)
                 break;