baseparse: Avoid overflow in update_interval calculation
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Thu, 22 Feb 2018 03:01:36 +0000 (22:01 -0500)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Thu, 22 Feb 2018 21:14:57 +0000 (16:14 -0500)
https://bugzilla.gnome.org/show_bug.cgi?id=793284

libs/gst/base/gstbaseparse.c

index 5c44454..7ad1212 100644 (file)
@@ -3860,7 +3860,11 @@ gst_base_parse_set_frame_rate (GstBaseParse * parse, guint fps_num,
         gst_util_uint64_scale (GST_SECOND, fps_den * lead_out, fps_num);
     /* aim for about 1.5s to estimate duration */
     if (parse->priv->update_interval < 0) {
-      parse->priv->update_interval = fps_num * 3 / (fps_den * 2);
+      guint64 interval = gst_util_uint64_scale (fps_num, 3,
+          G_GUINT64_CONSTANT (2) * fps_den);
+
+      parse->priv->update_interval = MIN (interval, G_MAXINT);
+
       GST_LOG_OBJECT (parse, "estimated update interval to %d frames",
           parse->priv->update_interval);
     }