mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-20 21:16:24 +00:00
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:
parent
6e770e0ebb
commit
1df9b05f18
1 changed files with 4 additions and 0 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue