typefind: Avoid overflow calculation

The qt typefinder uses guint64 values for offset and size calculation
but the typefinder system only supports gint64 values.

Make sure we don't end up using potentially overflowing values.
This commit is contained in:
Edward Hervey 2017-12-08 08:00:07 +01:00 committed by Edward Hervey
parent 6e770e0ebb
commit 1df9b05f18

View file

@ -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;
}