From 8b263331c5ebbb10b6ea521e9fd56751ba94254b Mon Sep 17 00:00:00 2001 From: Vittorio Giovara Date: Wed, 17 Dec 2014 14:53:41 +0100 Subject: [PATCH] mpegts: check get16() return value And break flow of execution rather than exiting the function. CC: libav-stable@libav.org Bug-Id: CID 732186 --- libavformat/mpegts.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index b2ba9f74e2..1377d9ceb4 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -1343,6 +1343,8 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type switch (desc_tag) { case 0x1E: /* SL descriptor */ desc_es_id = get16(pp, desc_end); + if (desc_es_id < 0) + break; if (ts && ts->pids[pid]) ts->pids[pid]->es_id = desc_es_id; for (i = 0; i < mp4_descr_count; i++) @@ -1361,7 +1363,8 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type } break; case 0x1F: /* FMC descriptor */ - get16(pp, desc_end); + if (get16(pp, desc_end) < 0) + break; if (mp4_descr_count > 0 && st->codec->codec_id == AV_CODEC_ID_AAC_LATM && mp4_descr->dec_config_descr_len && mp4_descr->es_id == pid) {