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
This commit is contained in:
parent
081d94e0f6
commit
21de3c327b
@ -332,6 +332,12 @@ var AuthenticationDialog = new Lang.Class({
|
|||||||
Main.sessionMode.disconnect(this._sessionUpdatedId);
|
Main.sessionMode.disconnect(this._sessionUpdatedId);
|
||||||
this._sessionUpdatedId = 0;
|
this._sessionUpdatedId = 0;
|
||||||
|
|
||||||
|
if (this._user) {
|
||||||
|
this._user.disconnect(this._userLoadedId);
|
||||||
|
this._user.disconnect(this._userChangedId);
|
||||||
|
this._user = null;
|
||||||
|
}
|
||||||
|
|
||||||
this._destroySession();
|
this._destroySession();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user