asfdemux: Check that we have enough data available before parsing bool/uint extended...
authorSebastian Dröge <sebastian@centricular.com>
Tue, 31 Jan 2017 11:50:21 +0000 (13:50 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Tue, 31 Jan 2017 11:50:21 +0000 (13:50 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=777955

gst/asfdemux/gstasfdemux.c

index 255a427..b8d48ad 100644 (file)
@@ -3439,7 +3439,12 @@ gst_asf_demux_process_ext_content_desc (GstASFDemux * demux, guint8 * data,
           break;
         }
         case ASF_DEMUX_DATA_TYPE_DWORD:{
-          guint uint_val = GST_READ_UINT32_LE (value);
+          guint uint_val;
+
+          if (value_len < 4)
+            break;
+
+          uint_val = GST_READ_UINT32_LE (value);
 
           /* this is the track number */
           g_value_init (&tag_value, G_TYPE_UINT);
@@ -3453,7 +3458,12 @@ gst_asf_demux_process_ext_content_desc (GstASFDemux * demux, guint8 * data,
         }
           /* Detect 3D */
         case ASF_DEMUX_DATA_TYPE_BOOL:{
-          gboolean bool_val = GST_READ_UINT32_LE (value);
+          gboolean bool_val;
+
+          if (value_len < 4)
+            break;
+
+          bool_val = GST_READ_UINT32_LE (value);
 
           if (strncmp ("Stereoscopic", name_utf8, strlen (name_utf8)) == 0) {
             if (bool_val) {