gstvalue: Prevent division or modulo by zero

The step can end up being zero if the underlying value isn't a valid
range GValue.

In those cases, return FALSE.

We don't use g_return*_if_fail since it will already have been triggered
by the above-mentionned _get_step() functions.

CID #1037132
This commit is contained in:
Edward Hervey 2014-04-05 11:37:53 +02:00 committed by Edward Hervey
parent 3e24bbefba
commit 8b51e9dc60

View file

@ -4445,6 +4445,8 @@ gst_value_list_equals_range (const GValue * list, const GValue * value)
const gint64 rmax = gst_value_get_int64_range_max (value); const gint64 rmax = gst_value_get_int64_range_max (value);
const gint64 rstep = gst_value_get_int64_range_step (value); const gint64 rstep = gst_value_get_int64_range_step (value);
GST_DEBUG ("List/range of int64s"); GST_DEBUG ("List/range of int64s");
if (rstep == 0)
return FALSE;
if (list_size != rmax / rstep - rmin / rstep + 1) if (list_size != rmax / rstep - rmin / rstep + 1)
return FALSE; return FALSE;
for (n = 0; n < list_size; ++n) { for (n = 0; n < list_size; ++n) {