summaryrefslogtreecommitdiff
path: root/gst/mpegtsdemux/mpegtspacketizer.c
diff options
context:
space:
mode:
authorNicolas Huet <nicolas.huet@parrot.com>2015-11-12 16:35:12 +0100
committerSebastian Dröge <sebastian@centricular.com>2015-11-13 09:37:53 +0100
commitd65d8657e64a387a87cdeb96e1b64fb640281166 (patch)
treef100706d89bbf398665ad02872a96f17ce729615 /gst/mpegtsdemux/mpegtspacketizer.c
parent6eae0c7e189f69c71cc3b0cf00e4fcdec172a13e (diff)
downloadgstreamer-plugins-bad-d65d8657e64a387a87cdeb96e1b64fb640281166.tar.gz
mpegtsdemux: fix section_data leak
If packet->payload_unit_start_indicator is true and pointer 0, there is no discontinuity check. Therefore there could be a previous section not complete that need to be cleared. https://bugzilla.gnome.org/show_bug.cgi?id=758010
Diffstat (limited to 'gst/mpegtsdemux/mpegtspacketizer.c')
-rw-r--r--gst/mpegtsdemux/mpegtspacketizer.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/gst/mpegtsdemux/mpegtspacketizer.c b/gst/mpegtsdemux/mpegtspacketizer.c
index 1cdb9e993..ce417c335 100644
--- a/gst/mpegtsdemux/mpegtspacketizer.c
+++ b/gst/mpegtsdemux/mpegtspacketizer.c
@@ -228,8 +228,6 @@ static void
mpegts_packetizer_stream_free (MpegTSPacketizerStream * stream)
{
mpegts_packetizer_clear_section (stream);
- if (stream->section_data)
- g_free (stream->section_data);
g_slist_foreach (stream->subtables,
(GFunc) mpegts_packetizer_stream_subtable_free, NULL);
g_slist_free (stream->subtables);
@@ -984,6 +982,7 @@ mpegts_packetizer_push_section (MpegTSPacketizer2 * packetizer,
GST_LOG
("PID 0x%04x PUSI and pointer == 0, skipping straight to section_start parsing",
packet->pid);
+ mpegts_packetizer_clear_section (stream);
goto section_start;
}
}