gstutils: check uri before using it in gst_pad_create_stream_id_internal
authorMatthieu Bouron <matthieu.bouron@collabora.com>
Sat, 14 Feb 2015 11:15:03 +0000 (12:15 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Sun, 15 Feb 2015 17:35:35 +0000 (17:35 +0000)
If an element implements wrongly the URI query and set the uri to NULL and if
the element calls gst_pad_create_stream_id at some point, it will lead to crash
as the uri is not supposed to be NULL in the gst_pad_create_stream_id_internal
function.

https://bugzilla.gnome.org/show_bug.cgi?id=744520

gst/gstutils.c

index 27219c8..f09a5ae 100644 (file)
@@ -3675,15 +3675,17 @@ gst_pad_create_stream_id_internal (GstPad * pad, GstElement * parent,
    * here is for source elements */
   if (!upstream_stream_id) {
     GstQuery *query;
+    gchar *uri = NULL;
 
     /* Try to generate one from the URI query and
      * if it fails take a random number instead */
     query = gst_query_new_uri ();
     if (gst_element_query (parent, query)) {
-      GChecksum *cs;
-      gchar *uri;
-
       gst_query_parse_uri (query, &uri);
+    }
+
+    if (uri) {
+      GChecksum *cs;
 
       /* And then generate an SHA256 sum of the URI */
       cs = g_checksum_new (G_CHECKSUM_SHA256);