From a24b9cd5c2fb5446e098cf35eefa78759055f3d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Fri, 29 May 2015 15:30:41 +0100 Subject: [PATCH] discoverer: don't crash on unknown info types when deserializing Handle unknown info types when deserializing instead of dereferencing NULL pointers. Coverity CID 1302394 --- gst-libs/gst/pbutils/gstdiscoverer.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/gst-libs/gst/pbutils/gstdiscoverer.c b/gst-libs/gst/pbutils/gstdiscoverer.c index acc3d889b1..db5476e98f 100644 --- a/gst-libs/gst/pbutils/gstdiscoverer.c +++ b/gst-libs/gst/pbutils/gstdiscoverer.c @@ -1875,7 +1875,8 @@ _parse_discovery (GVariant * variant, GstDiscovererInfo * info) g_variant_get_child_value (specific, 0)); break; default: - break; + GST_WARNING ("Unexpected discoverer info type %d", type); + goto out; } _parse_common_stream_info (sinfo, g_variant_get_child_value (common, 0)); @@ -1895,13 +1896,17 @@ _parse_discovery (GVariant * variant, GstDiscovererInfo * info) while ((child = g_variant_iter_next_value (&iter))) { GstDiscovererStreamInfo *child_info; child_info = _parse_discovery (g_variant_get_variant (child), info); - cinfo->streams = - g_list_append (cinfo->streams, - gst_discoverer_stream_info_ref (child_info)); + if (child_info != NULL) { + cinfo->streams = + g_list_append (cinfo->streams, + gst_discoverer_stream_info_ref (child_info)); + } g_variant_unref (child); } } +out: + g_variant_unref (common); g_variant_unref (specific); g_variant_unref (variant);