opus: reject major version number above what we grok
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Thu, 24 May 2012 21:12:56 +0000 (22:12 +0100)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Thu, 24 May 2012 21:59:09 +0000 (22:59 +0100)
ext/opus/gstopusheader.c

index 36cb4ec..5c4edba 100644 (file)
@@ -231,7 +231,7 @@ gst_opus_header_is_id_header (GstBuffer * buf)
 {
   gsize size = gst_buffer_get_size (buf);
   guint8 *data = NULL;
-  guint8 channels, channel_mapping_family, n_streams, n_stereo_streams;
+  guint8 version, channels, channel_mapping_family, n_streams, n_stereo_streams;
   gboolean ret = FALSE;
   GstMapInfo map;
 
@@ -244,6 +244,10 @@ gst_opus_header_is_id_header (GstBuffer * buf)
   data = map.data;
   size = map.size;
 
+  version = data[8];
+  if (version >= 0x0f)          /* major version >=0 is what we grok */
+    goto beach;
+
   channels = data[9];
 
   if (channels == 0)