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:
Matthew Waters 2020-06-25 16:35:45 +10:00
parent 868149ca5a
commit 37f0119f49

View file

@ -8833,13 +8833,15 @@ qtdemux_find_atom (GstQTDemux * qtdemux, guint64 * offset,
}
if (lfourcc == fourcc) {
GST_DEBUG_OBJECT (qtdemux, "found fourcc at offset %" G_GUINT64_FORMAT,
*offset);
GST_DEBUG_OBJECT (qtdemux, "found '%" GST_FOURCC_FORMAT " at offset %"
G_GUINT64_FORMAT, GST_FOURCC_ARGS (fourcc), *offset);
break;
} else {
GST_LOG_OBJECT (qtdemux,
"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;
}
}