diff options
author | Benjamin Berg <bberg@redhat.com> | 2018-03-05 16:12:48 +0100 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2018-03-05 16:47:52 +0100 |
commit | 1d72a0b3507d425011a4d280ebbe53f3463d3ed9 (patch) | |
tree | 511251f238e1d0b36f879010b0cb8b6b968db5af /panels/power | |
parent | 9066ce5525f37fc186123b2872a080a9ee4b10ce (diff) | |
download | gnome-control-center-1d72a0b3507d425011a4d280ebbe53f3463d3ed9.tar.gz |
power: Fix crash when panel is closed quickly
Fix a use-after-free while creating the dbus proxy for
org.gnome.SettingsDaemon.Power.Keyboard. This fix is identical to the
previous fix for the screen proxy.
https://bugzilla.gnome.org/show_bug.cgi?id=794089
Diffstat (limited to 'panels/power')
-rw-r--r-- | panels/power/cc-power-panel.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c index aff0ae8e6..f9b67a458 100644 --- a/panels/power/cc-power-panel.c +++ b/panels/power/cc-power-panel.c @@ -1117,11 +1117,11 @@ static void got_kbd_proxy_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; - CcPowerPanel *self = CC_POWER_PANEL (user_data); - CcPowerPanelPrivate *priv = self->priv; + CcPowerPanel *self; + GDBusProxy *kbd_proxy; - priv->kbd_proxy = g_dbus_proxy_new_for_bus_finish (res, &error); - if (priv->kbd_proxy == NULL) + kbd_proxy = g_dbus_proxy_new_for_bus_finish (res, &error); + if (kbd_proxy == NULL) { if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) g_printerr ("Error creating keyboard proxy: %s\n", error->message); @@ -1129,8 +1129,11 @@ got_kbd_proxy_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) return; } + self = CC_POWER_PANEL (user_data); + self->priv->kbd_proxy = kbd_proxy; + /* we want to change the bar if the user presses brightness buttons */ - g_signal_connect (priv->kbd_proxy, "g-properties-changed", + g_signal_connect (kbd_proxy, "g-properties-changed", G_CALLBACK (on_kbd_property_change), self); sync_kbd_brightness (self); |