mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-09-08 21:28:45 +00:00
qtdemux: bail out when encountering an atom with a size of 0
A size 0 atom means the atom extends to the end of the file. No further valid atoms will ever follow. Avoids a subsequent scan for an atom from one byte earlier after encountering a size 0 atom. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/643>
This commit is contained in:
parent
868149ca5a
commit
37f0119f49
1 changed files with 5 additions and 3 deletions
|
@ -8833,13 +8833,15 @@ qtdemux_find_atom (GstQTDemux * qtdemux, guint64 * offset,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lfourcc == fourcc) {
|
if (lfourcc == fourcc) {
|
||||||
GST_DEBUG_OBJECT (qtdemux, "found fourcc at offset %" G_GUINT64_FORMAT,
|
GST_DEBUG_OBJECT (qtdemux, "found '%" GST_FOURCC_FORMAT " at offset %"
|
||||||
*offset);
|
G_GUINT64_FORMAT, GST_FOURCC_ARGS (fourcc), *offset);
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
GST_LOG_OBJECT (qtdemux,
|
GST_LOG_OBJECT (qtdemux,
|
||||||
"skipping atom '%" GST_FOURCC_FORMAT "' at %" G_GUINT64_FORMAT,
|
"skipping atom '%" GST_FOURCC_FORMAT "' at %" G_GUINT64_FORMAT,
|
||||||
GST_FOURCC_ARGS (fourcc), *offset);
|
GST_FOURCC_ARGS (lfourcc), *offset);
|
||||||
|
if (*offset == G_MAXUINT64)
|
||||||
|
goto locate_failed;
|
||||||
*offset += *length;
|
*offset += *length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue