typefindfunctions: Increase xml typefinder closing brace limit
authorIlie Halip <ilie.halip@gmail.com>
Sat, 18 Mar 2023 09:54:15 +0000 (11:54 +0200)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 30 Mar 2023 23:12:23 +0000 (23:12 +0000)
If the first XML element in a DASH manifest has its closing brance
beyond the first 512 bytes (because of, e.g. lots of attributes),
the MPD typefinder fails. Try to read a larger block, and then
smaller blocks until 512 bytes.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2385

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

subprojects/gst-plugins-base/gst/typefind/gsttypefindfunctions.c

index c732f31..079de11 100644 (file)
@@ -660,15 +660,17 @@ xml_check_first_element (GstTypeFind * tf, const gchar * element, guint elen,
 
   length = gst_type_find_get_length (tf);
 
-  /* try a default that should be enough */
-  if (length == 0)
-    length = 512;
-  else if (length < 32)
+  if (length == 0) {
+    length = 4096;
+    while (!(data = gst_type_find_peek (tf, 0, length)) && length >= 512)
+      length /= 2;
+  } else if (length < 32) {
     return FALSE;
-  else                          /* the first few bytes should be enough */
+  } else {                      /* the first few bytes should be enough */
     length = MIN (4096, length);
+    data = gst_type_find_peek (tf, 0, length);
+  }
 
-  data = gst_type_find_peek (tf, 0, length);
   if (!data)
     return FALSE;