From d6b82c655242dda707ff99db5f68f1de1143de56 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 24 Apr 2018 14:04:58 -0400 Subject: [PATCH] pull polkit cancel lock up from upstream Resolves: #1568213 --- ...t-Guard-against-repeated-close-calls.patch | 86 +++++++++++++++++++ gnome-shell.spec | 10 ++- 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 0001-polkitAgent-Guard-against-repeated-close-calls.patch diff --git a/0001-polkitAgent-Guard-against-repeated-close-calls.patch b/0001-polkitAgent-Guard-against-repeated-close-calls.patch new file mode 100644 index 0000000..e32d218 --- /dev/null +++ b/0001-polkitAgent-Guard-against-repeated-close-calls.patch @@ -0,0 +1,86 @@ +From 7c9dbc66d9ab1f3adad29c827fac2d7d3ee05fae Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Sat, 21 Apr 2018 18:39:10 +0200 +Subject: [PATCH] polkitAgent: Guard against repeated close() calls + +We use the close() method to disconnect signal handlers set up in +init(), however the handler ID is only valid in the first call in +case the method is called more than once. + +https://gitlab.gnome.org/GNOME/gnome-shell/issues/221 +--- + js/ui/components/polkitAgent.js | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/js/ui/components/polkitAgent.js b/js/ui/components/polkitAgent.js +index 316bc2ad1..7a0682c4b 100644 +--- a/js/ui/components/polkitAgent.js ++++ b/js/ui/components/polkitAgent.js +@@ -174,61 +174,63 @@ var AuthenticationDialog = new Lang.Class({ + transition: 'linear' + }); + } else { + Tweener.addTween(this._workSpinner.actor, + { opacity: 0, + time: WORK_SPINNER_ANIMATION_TIME, + transition: 'linear', + onCompleteScope: this, + onComplete() { + if (this._workSpinner) + this._workSpinner.stop(); + } + }); + } + }, + + performAuthentication() { + this.destroySession(); + this._session = new PolkitAgent.Session({ identity: this._identityToAuth, + cookie: this._cookie }); + this._session.connect('completed', this._onSessionCompleted.bind(this)); + this._session.connect('request', this._onSessionRequest.bind(this)); + this._session.connect('show-error', this._onSessionShowError.bind(this)); + this._session.connect('show-info', this._onSessionShowInfo.bind(this)); + this._session.initiate(); + }, + + close(timestamp) { + this.parent(timestamp); + +- Main.sessionMode.disconnect(this._sessionUpdatedId); ++ if (this._sessionUpdatedId) ++ Main.sessionMode.disconnect(this._sessionUpdatedId); ++ this._sessionUpdatedId = 0; + }, + + _ensureOpen() { + // NOTE: ModalDialog.open() is safe to call if the dialog is + // already open - it just returns true without side-effects + if (!this.open(global.get_current_time())) { + // This can fail if e.g. unable to get input grab + // + // In an ideal world this wouldn't happen (because the + // Shell is in complete control of the session) but that's + // just not how things work right now. + // + // One way to make this happen is by running 'sleep 3; + // pkexec bash' and then opening a popup menu. + // + // We could add retrying if this turns out to be a problem + + log('polkitAuthenticationAgent: Failed to show modal dialog.' + + ' Dismissing authentication request for action-id ' + this.actionId + + ' cookie ' + this._cookie); + this._emitDone(true); + } + }, + + _emitDone(dismissed) { + if (!this._doneEmitted) { + this._doneEmitted = true; + this.emit('done', dismissed); + } + }, +-- +2.16.2 + diff --git a/gnome-shell.spec b/gnome-shell.spec index 0ffe088..2d68ec6 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -1,6 +1,6 @@ Name: gnome-shell Version: 3.28.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Window management and application launching for GNOME Group: User Interface/Desktops @@ -13,6 +13,8 @@ Source0: http://download.gnome.org/sources/gnome-shell/3.28/%{name}-%{ver # Replace Epiphany with Firefox in the default favourite apps list Patch1: gnome-shell-favourite-apps-firefox.patch +Patch10: 0001-polkitAgent-Guard-against-repeated-close-calls.patch + %define gnome_bluetooth_version 1:3.9.0 %define gobject_introspection_version 1.45.4 %define gjs_version 1.51.90 @@ -120,6 +122,8 @@ easy to use experience. %setup -q %patch1 -p1 -b .firefox +%patch10 -p1 -b .polkit-fix + %build %meson %meson_build @@ -184,6 +188,10 @@ glib-compile-schemas --allow-any-name %{_datadir}/glib-2.0/schemas &> /dev/null %{_mandir}/man1/%{name}.1.gz %changelog +* Tue Apr 24 2018 Ray Strode - 3.28.1-2 +- pull polkit cancel lock up from upstream + Resolves: #1568213 + * Fri Apr 13 2018 Florian Müllner - 3.28.1-1 - Update to 3.28.1