aiffparse: bail out early when bytes per sample is not set
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Thu, 12 Jun 2014 09:00:55 +0000 (10:00 +0100)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Thu, 12 Jun 2014 09:00:55 +0000 (10:00 +0100)
This should always be set for valid files when we get there,
and checking this avoids having ad hoc checks further down
in several places.

Coverity 1139698

gst/aiff/aiffparse.c

index 1ba9e79..14a4993 100644 (file)
@@ -1247,6 +1247,12 @@ gst_aiff_parse_stream_data (GstAiffParse * aiff)
   GstClockTime timestamp, next_timestamp, duration;
   guint64 pos, nextpos;
 
+  if (aiff->bytes_per_sample <= 0) {
+    GST_ELEMENT_ERROR (aiff, STREAM, WRONG_TYPE, (NULL),
+        ("File is not a valid AIFF file (invalid bytes per sample)"));
+    return GST_FLOW_ERROR;
+  }
+
 iterate_adapter:
   GST_LOG_OBJECT (aiff,
       "offset: %" G_GINT64_FORMAT " , end: %" G_GINT64_FORMAT " , dataleft: %"
@@ -1262,7 +1268,7 @@ iterate_adapter:
       MIN (gst_guint64_to_gdouble (aiff->dataleft),
       aiff->max_buf_size * ABS (aiff->segment.rate));
 
-  if (desired >= aiff->bytes_per_sample && aiff->bytes_per_sample > 0)
+  if (desired >= aiff->bytes_per_sample)
     desired -= (desired % aiff->bytes_per_sample);
 
   GST_LOG_OBJECT (aiff, "Fetching %" G_GINT64_FORMAT " bytes of data "