gstvalue: Prevent division or modulo by zero
authorEdward Hervey <edward@collabora.com>
Sat, 5 Apr 2014 09:37:53 +0000 (11:37 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Thu, 17 Apr 2014 11:20:45 +0000 (13:20 +0200)
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

gst/gstvalue.c

index f45597f..6643080 100644 (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 rstep = gst_value_get_int64_range_step (value);
     GST_DEBUG ("List/range of int64s");
+    if (rstep == 0)
+      return FALSE;
     if (list_size != rmax / rstep - rmin / rstep + 1)
       return FALSE;
     for (n = 0; n < list_size; ++n) {