aiffparse: bail out early when bytes per sample is not set

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
This commit is contained in:
Vincent Penquerc'h 2014-06-12 10:00:55 +01:00
parent db887f05ca
commit 174fc1015e

View file

@ -1247,6 +1247,12 @@ gst_aiff_parse_stream_data (GstAiffParse * aiff)
GstClockTime timestamp, next_timestamp, duration; GstClockTime timestamp, next_timestamp, duration;
guint64 pos, nextpos; 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: iterate_adapter:
GST_LOG_OBJECT (aiff, GST_LOG_OBJECT (aiff,
"offset: %" G_GINT64_FORMAT " , end: %" G_GINT64_FORMAT " , dataleft: %" "offset: %" G_GINT64_FORMAT " , end: %" G_GINT64_FORMAT " , dataleft: %"
@ -1262,7 +1268,7 @@ iterate_adapter:
MIN (gst_guint64_to_gdouble (aiff->dataleft), MIN (gst_guint64_to_gdouble (aiff->dataleft),
aiff->max_buf_size * ABS (aiff->segment.rate)); 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); desired -= (desired % aiff->bytes_per_sample);
GST_LOG_OBJECT (aiff, "Fetching %" G_GINT64_FORMAT " bytes of data " GST_LOG_OBJECT (aiff, "Fetching %" G_GINT64_FORMAT " bytes of data "