[gnome-shell] polkitAgent: Disconnect from user signals when closing dialogue
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] polkitAgent: Disconnect from user signals when closing dialogue
- Date: Thu, 24 Jan 2019 14:49:44 +0000 (UTC)
commit 21de3c327b9e5f4141723c15e75e52c206e71b53
Author: Philip Withnall <withnall endlessm com>
Date: Fri Jan 18 13:22:33 2019 +0000
polkitAgent: Disconnect from user signals when closing dialogue
Otherwise the user object could outlive the dialogue, emit a subsequent
signal, and the callback from that signal could reference finalised
objects/widgets from the dialogue. The likely mechanism for the user
outliving the dialogue is caching of user objects within
libaccountsservice.
This can be triggered by running `pkexec true` from a gnome-terminal
window, then calling `pkill pkexec` from another terminal (on a
different VT or via SSH). This causes the dialogue to be cancelled by
polkitd.
Signed-off-by: Philip Withnall <withnall endlessm com>
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/357
js/ui/components/polkitAgent.js | 6 ++++++
1 file changed, 6 insertions(+)
---
diff --git a/js/ui/components/polkitAgent.js b/js/ui/components/polkitAgent.js
index 7f38e122e..dee5f38b3 100644
--- a/js/ui/components/polkitAgent.js
+++ b/js/ui/components/polkitAgent.js
@@ -332,6 +332,12 @@ var AuthenticationDialog = new Lang.Class({
Main.sessionMode.disconnect(this._sessionUpdatedId);
this._sessionUpdatedId = 0;
+ if (this._user) {
+ this._user.disconnect(this._userLoadedId);
+ this._user.disconnect(this._userChangedId);
+ this._user = null;
+ }
+
this._destroySession();
},
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]