Blob Blame History Raw
From ce60828b9e04a614dde7e0af1a9ab94f6f3fcdd1 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Tue, 1 Jun 2021 20:52:44 +0200
Subject: [PATCH] media-keys: Do not access GVariant before error checks

This may trigger asserts and crashes down the line.
---
 plugins/media-keys/gsd-media-keys-manager.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
index 1b3ff38..c4aef34 100644
--- a/plugins/media-keys/gsd-media-keys-manager.c
+++ b/plugins/media-keys/gsd-media-keys-manager.c
@@ -442,8 +442,6 @@ grab_accelerators_complete (GObject      *object,
         GsdMediaKeysManager *manager = user_data;
 
         ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (object), result, &error);
-        g_variant_get (ret, "(@au)", &actions);
-        g_variant_unref (ret);
 
         if (error) {
                 retry = g_error_matches (error, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD);
@@ -454,6 +452,10 @@ grab_accelerators_complete (GObject      *object,
                 g_error_free (error);
         } else {
                 int i;
+
+                g_variant_get (ret, "(@au)", &actions);
+                g_variant_unref (ret);
+
                 for (i = 0; i < manager->priv->keys->len; i++) {
                         MediaKey *key;
 
-- 
2.31.1