diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index fa0b608e61..0758152b3a 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -2335,7 +2335,8 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len av_log(ts->stream, AV_LOG_TRACE, "pcr_pid=0x%x\n", pcr_pid); program_info_length = get16(&p, p_end); - if (program_info_length < 0) + + if (program_info_length < 0 || (program_info_length & 0xFFF) > p_end - p) return; program_info_length &= 0xfff; while (program_info_length >= 2) {