diff --git a/gst/typefind/gsttypefindfunctions.c b/gst/typefind/gsttypefindfunctions.c index 0cb7c0dfa0..0a66e3a336 100644 --- a/gst/typefind/gsttypefindfunctions.c +++ b/gst/typefind/gsttypefindfunctions.c @@ -3358,6 +3358,8 @@ qt_type_find (GstTypeFind * tf, gpointer unused) } size = GST_READ_UINT32_BE (data); + if (size + offset >= G_MAXINT64) + break; /* check compatible brands rather than ever expaning major brands above */ if ((STRNCMP (&data[4], "ftyp", 4) == 0) && (size >= 16)) { data = gst_type_find_peek (tf, offset, size); @@ -3393,6 +3395,8 @@ qt_type_find (GstTypeFind * tf, gpointer unused) new_offset = offset + size; if (new_offset <= offset) break; + if (new_offset + 16 >= G_MAXINT64) + break; offset = new_offset; }