qtdemux: Avoid integer overflow when parsing Theora extension
authorSebastian Dröge <sebastian@centricular.com>
Thu, 26 Sep 2024 19:16:06 +0000 (22:16 +0300)
committerBackport Bot <gitlab-backport-bot@gstreamer-foundation.org>
Tue, 3 Dec 2024 02:56:50 +0000 (02:56 +0000)
Thanks to Antonio Morales for finding and reporting the issue.

Fixes GHSL-2024-166
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3851

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8044>

subprojects/gst-plugins-good/gst/isomp4/qtdemux.c

index 6c8a7999dd7ab16e95d789826865ad7108d76755..de8fae8b02ee806fb9dd63a5d4a30bdf6a0853be 100644 (file)
@@ -8815,7 +8815,7 @@ qtdemux_parse_theora_extension (GstQTDemux * qtdemux, QtDemuxStream * stream,
   end -= 8;
 
   while (buf < end) {
-    gint size;
+    guint32 size;
     guint32 type;
 
     size = QT_UINT32 (buf);
@@ -8823,7 +8823,7 @@ qtdemux_parse_theora_extension (GstQTDemux * qtdemux, QtDemuxStream * stream,
 
     GST_LOG_OBJECT (qtdemux, "%p %p", buf, end);
 
-    if (buf + size > end || size <= 0)
+    if (end - buf < size || size < 8)
       break;
 
     buf += 8;