gst: check non-null before dereference
authorVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Fri, 28 Apr 2017 17:43:49 +0000 (19:43 +0200)
committerVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Fri, 28 Apr 2017 19:01:43 +0000 (21:01 +0200)
It is possible to use gst_deinit() without registering the base
classes. For example, when using gst_init_get_option_group() and
call the program with an invalid parameter. In that case,
gst_deinit() will lead to a segmentation fault, since there is a
dereference to a pointer that is null.

This patch validates if the type is non-null before dereferencing
it.

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

gst/gst.c

index 8087aa4..e0225b4 100644 (file)
--- a/gst/gst.c
+++ b/gst/gst.c
@@ -1003,7 +1003,7 @@ gst_deinit (void)
   }
   g_thread_pool_set_max_unused_threads (0);
   bin_class = GST_BIN_CLASS (g_type_class_peek (gst_bin_get_type ()));
-  if (bin_class->pool != NULL) {
+  if (bin_class && bin_class->pool != NULL) {
     g_thread_pool_free (bin_class->pool, FALSE, TRUE);
     bin_class->pool = NULL;
   }