inspector: fix crash caused by uninitialized GVariant
authorNelson Benítez León <nbenitezl@gmail.com>
Thu, 6 Apr 2023 22:45:59 +0000 (18:45 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 21 Apr 2023 07:07:21 +0000 (09:07 +0200)
we were not checking the return gboolean of
gtk_action_muxer_query_action() which was
returning FALSE for the crash case, meaning
it didn't set the passed in GVariant, but
we were still using it as it was non-null.

Fixes #5729

gtk/inspector/actions.c

index eeac0a188ef73faa186c4d17762af6dbed3836bf..eb979bfd0cfd4560ac7ce026a94a98fe5fe0a60c 100644 (file)
@@ -172,10 +172,9 @@ bind_parameter_cb (GtkSignalListItemFactory *factory,
   name = action_holder_get_name (ACTION_HOLDER (item));
   if (G_IS_ACTION_GROUP (owner))
     parameter = (const char *)g_action_group_get_action_parameter_type (G_ACTION_GROUP (owner), name);
-  else if (GTK_IS_ACTION_MUXER (owner))
-    gtk_action_muxer_query_action (GTK_ACTION_MUXER (owner), name,
-                                   NULL, (const GVariantType **)&parameter, NULL, NULL, NULL);
-  else
+  else if (!GTK_IS_ACTION_MUXER (owner) ||
+           !gtk_action_muxer_query_action (GTK_ACTION_MUXER (owner), name,
+                                           NULL, (const GVariantType **)&parameter, NULL, NULL, NULL))
     parameter = "(Unknown)";
 
   gtk_label_set_label (GTK_LABEL (label), parameter);
@@ -212,10 +211,9 @@ bind_state_cb (GtkSignalListItemFactory *factory,
   name = action_holder_get_name (ACTION_HOLDER (item));
   if (G_IS_ACTION_GROUP (owner))
     state = g_action_group_get_action_state (G_ACTION_GROUP (owner), name);
-  else if (GTK_IS_ACTION_MUXER (owner))
-    gtk_action_muxer_query_action (GTK_ACTION_MUXER (owner), name,
-                                   NULL, NULL, NULL, NULL, &state);
-  else
+  else if (!GTK_IS_ACTION_MUXER (owner) ||
+           !gtk_action_muxer_query_action (GTK_ACTION_MUXER (owner), name,
+                                           NULL, NULL, NULL, NULL, &state))
     state = NULL;
 
   if (state)