qtdemux: Don't use invalid values from failed trex parsing
authorEdward Hervey <edward@centricular.com>
Thu, 11 Aug 2022 06:48:08 +0000 (08:48 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Thu, 11 Aug 2022 06:50:34 +0000 (08:50 +0200)
If parsing the fragment default values (`trex` atom) failed, don't try to
compute a bogus sample_description_id value.

Fixes #1369

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2860>

subprojects/gst-plugins-good/gst/isomp4/qtdemux.c

index 97ba079..43d2c25 100644 (file)
@@ -3627,11 +3627,13 @@ qtdemux_parse_tfhd (GstQTDemux * qtdemux, GstByteReader * tfhd,
       goto invalid_track;
 
   /* obtain stream defaults */
-  qtdemux_parse_trex (qtdemux, *stream,
-      default_sample_duration, default_sample_size, default_sample_flags);
+  if (qtdemux_parse_trex (qtdemux, *stream,
+          default_sample_duration, default_sample_size, default_sample_flags)) {
 
-  (*stream)->stsd_sample_description_id =
-      (*stream)->def_sample_description_index - 1;
+    /* Default sample description index is only valid if trex parsing succeeded */
+    (*stream)->stsd_sample_description_id =
+        (*stream)->def_sample_description_index - 1;
+  }
 
   if (flags & TF_SAMPLE_DESCRIPTION_INDEX) {
     guint32 sample_description_index;