summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeungha Yang <sh.yang@lge.com>2017-05-02 10:32:30 +0900
committerSebastian Dröge <sebastian@centricular.com>2017-05-08 18:12:36 +0200
commit84cb0852e1184176ab953bda459b811a050dfcd1 (patch)
tree20be3c9fea6ba755bc21ebc1a97cead50965f42a
parent8b63cb82194d18218413ac6b6d129fbb9fa74feb (diff)
downloadgstreamer-plugins-good-84cb0852e1184176ab953bda459b811a050dfcd1.tar.gz
qtdemux: Fix crash on mss stream caused by invalid stsd entry access
Since mss has no moov, default stsd entry should be created with media-caps. https://bugzilla.gnome.org/show_bug.cgi?id=782042
-rw-r--r--gst/isomp4/qtdemux.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
index 91523e1ba..d1351b930 100644
--- a/gst/isomp4/qtdemux.c
+++ b/gst/isomp4/qtdemux.c
@@ -1895,6 +1895,10 @@ gst_qtdemux_setcaps (GstQTDemux * demux, GstCaps * caps)
stream = _create_stream ();
demux->streams[demux->n_streams] = stream;
demux->n_streams = 1;
+ /* mss has no stsd/stsd entry, use id 0 as default */
+ stream->stsd_entries_length = 1;
+ stream->stsd_sample_description_id = stream->cur_stsd_entry_index = 0;
+ stream->stsd_entries = g_new0 (QtDemuxStreamStsdEntry, 1);
} else {
stream = demux->streams[0];
}
@@ -3340,6 +3344,11 @@ qtdemux_parse_tfhd (GstQTDemux * qtdemux, GstByteReader * tfhd,
if (!gst_byte_reader_skip (tfhd, 4))
goto invalid_track;
+ if (qtdemux->mss_mode) {
+ /* mss has no stsd entry */
+ (*stream)->stsd_sample_description_id = 0;
+ }
+
if (flags & TF_DEFAULT_SAMPLE_DURATION)
if (!gst_byte_reader_get_uint32_be (tfhd, default_sample_duration))
goto invalid_track;