pull polkit cancel lock up from upstream

Resolves: #1568213
This commit is contained in:
Ray Strode 2018-04-24 14:04:58 -04:00
parent 602b05fc81
commit d6b82c6552
2 changed files with 95 additions and 1 deletions

View File

@ -0,0 +1,86 @@
From 7c9dbc66d9ab1f3adad29c827fac2d7d3ee05fae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
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

View File

@ -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 <rstrode@redhat.com> - 3.28.1-2
- pull polkit cancel lock up from upstream
Resolves: #1568213
* Fri Apr 13 2018 Florian Müllner <fmuellner@redhat.com> - 3.28.1-1
- Update to 3.28.1