summaryrefslogtreecommitdiffstats
path: root/gst/qtdemux/qtatomparser.h
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim.muller@collabora.co.uk>2009-08-20 01:39:17 +0100
committerTim-Philipp Müller <tim.muller@collabora.co.uk>2009-09-24 16:28:40 +0100
commit9da3ed6491693f2a227bcfa10f1598f1f7fad22f (patch)
tree4d6da583fce338bfc37f610576096487594252d7 /gst/qtdemux/qtatomparser.h
parenta16feec38ece90d629634a813eaf2b056e7d646e (diff)
qtdemux: add qt_atom_parse_has_remaining() to avoid overflows with _get_remaining()
Diffstat (limited to 'gst/qtdemux/qtatomparser.h')
-rw-r--r--gst/qtdemux/qtatomparser.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/gst/qtdemux/qtatomparser.h b/gst/qtdemux/qtatomparser.h
index ce32b980..7669ec0f 100644
--- a/gst/qtdemux/qtatomparser.h
+++ b/gst/qtdemux/qtatomparser.h
@@ -39,6 +39,13 @@ qt_atom_parser_get_remaining (QtAtomParser * parser)
}
static inline gboolean
+qt_atom_parser_has_remaining (QtAtomParser * parser, guint64 min_remaining)
+{
+ return G_LIKELY (parser->size >= min_remaining) &&
+ G_LIKELY ((parser->size - min_remaining) >= parser->byte);
+}
+
+static inline gboolean
qt_atom_parser_skip (QtAtomParser * parser, guint nbytes)
{
if (G_UNLIKELY (qt_atom_parser_get_remaining (parser) < nbytes))