mpegts: use goto out instead of break on truncated or invalid pmt tables
authorMarton Balint <cus@passwd.hu>
Sun, 2 Mar 2014 17:34:48 +0000 (18:34 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 5 Mar 2014 01:28:25 +0000 (02:28 +0100)
Signed-off-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/mpegts.c

index 10b33fe..2a03f01 100644 (file)
@@ -1705,10 +1705,10 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
             break;
         pid = get16(&p, p_end);
         if (pid < 0)
-            break;
+            goto out;
         pid &= 0x1fff;
         if (pid == ts->current_pid)
-            break;
+            goto out;
 
         /* now create stream */
         if (ts->pids[pid] && ts->pids[pid]->type == MPEGTS_PES) {
@@ -1754,11 +1754,11 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
 
         desc_list_len = get16(&p, p_end);
         if (desc_list_len < 0)
-            break;
+            goto out;
         desc_list_len &= 0xfff;
         desc_list_end = p + desc_list_len;
         if (desc_list_end > p_end)
-            break;
+            goto out;
         for(;;) {
             if (ff_parse_mpeg2_descriptor(ts->stream, st, stream_type, &p, desc_list_end,
                 mp4_descr, mp4_descr_count, pid, ts) < 0)