parent
a27f7e492d
commit
59c49c2588
@ -0,0 +1,56 @@
|
||||
From 0a46c047512e36d454800602b3845be35eb2dafe Mon Sep 17 00:00:00 2001
|
||||
From: Philip Withnall <pwithnall@endlessos.org>
|
||||
Date: Sat, 1 May 2021 01:08:59 +0100
|
||||
Subject: [PATCH 1/2] pk-transaction: Only set polkit interactive flag if
|
||||
transaction has too
|
||||
|
||||
This should fix polkit dialogues popping up when doing background
|
||||
refresh operations, particularly for the
|
||||
`org.freedesktop.packagekit.system-sources-refresh` action.
|
||||
|
||||
See
|
||||
https://gitlab.gnome.org/GNOME/gnome-software/-/issues/582#note_1095101.
|
||||
|
||||
Note: This fix is only done through code inspection. I have not tried to
|
||||
reproduce the failure case, and not tested that this commit actually
|
||||
fixes it.
|
||||
|
||||
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
|
||||
---
|
||||
src/pk-transaction.c | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
|
||||
index 83ee5588c..64b7def40 100644
|
||||
--- a/src/pk-transaction.c
|
||||
+++ b/src/pk-transaction.c
|
||||
@@ -2252,6 +2252,7 @@ pk_transaction_authorize_actions (PkTransaction *transaction,
|
||||
PkTransactionPrivate *priv = transaction->priv;
|
||||
const gchar *text = NULL;
|
||||
struct AuthorizeActionsData *data = NULL;
|
||||
+ PolkitCheckAuthorizationFlags flags;
|
||||
|
||||
if (actions->len <= 0) {
|
||||
g_debug ("No authentication required");
|
||||
@@ -2338,13 +2339,17 @@ pk_transaction_authorize_actions (PkTransaction *transaction,
|
||||
data->role = role;
|
||||
data->actions = g_ptr_array_ref (actions);
|
||||
|
||||
+ flags = POLKIT_CHECK_AUTHORIZATION_FLAGS_NONE;
|
||||
+ if (pk_backend_job_get_interactive (priv->job))
|
||||
+ flags |= POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION;
|
||||
+
|
||||
g_debug ("authorizing action %s", action_id);
|
||||
/* do authorization async */
|
||||
polkit_authority_check_authorization (priv->authority,
|
||||
priv->subject,
|
||||
action_id,
|
||||
details,
|
||||
- POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
|
||||
+ flags,
|
||||
priv->cancellable,
|
||||
(GAsyncReadyCallback) pk_transaction_authorize_actions_finished_cb,
|
||||
data);
|
||||
--
|
||||
2.40.0
|
||||
|
@ -0,0 +1,84 @@
|
||||
From b06fae505b66049e537ad15d3569c260e9bc976f Mon Sep 17 00:00:00 2001
|
||||
From: Philip Withnall <pwithnall@endlessos.org>
|
||||
Date: Sat, 1 May 2021 01:16:05 +0100
|
||||
Subject: [PATCH 2/2] pk-engine: Only set polkit interactive flag if method
|
||||
call has too
|
||||
|
||||
Same as the previous commit.
|
||||
|
||||
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
|
||||
---
|
||||
src/pk-engine.c | 22 +++++++++++++++++-----
|
||||
1 file changed, 17 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/pk-engine.c b/src/pk-engine.c
|
||||
index 7ea87a448..3d6633ba6 100644
|
||||
--- a/src/pk-engine.c
|
||||
+++ b/src/pk-engine.c
|
||||
@@ -632,6 +632,18 @@ pk_engine_is_proxy_unchanged (PkEngine *engine, const gchar *sender,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+static PolkitCheckAuthorizationFlags
|
||||
+get_polkit_flags_for_dbus_invocation (GDBusMethodInvocation *invocation)
|
||||
+{
|
||||
+ PolkitCheckAuthorizationFlags flags = POLKIT_CHECK_AUTHORIZATION_FLAGS_NONE;
|
||||
+ GDBusMessage *message = g_dbus_method_invocation_get_message (invocation);
|
||||
+
|
||||
+ if (g_dbus_message_get_flags (message) & G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION)
|
||||
+ flags |= POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION;
|
||||
+
|
||||
+ return flags;
|
||||
+}
|
||||
+
|
||||
static void
|
||||
pk_engine_set_proxy (PkEngine *engine,
|
||||
const gchar *proxy_http,
|
||||
@@ -715,7 +727,7 @@ pk_engine_set_proxy (PkEngine *engine,
|
||||
polkit_authority_check_authorization (engine->priv->authority, subject,
|
||||
"org.freedesktop.packagekit.system-network-proxy-configure",
|
||||
NULL,
|
||||
- POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
|
||||
+ get_polkit_flags_for_dbus_invocation (context),
|
||||
NULL,
|
||||
(GAsyncReadyCallback) pk_engine_action_obtain_proxy_authorization_finished_cb,
|
||||
state);
|
||||
@@ -1604,7 +1616,7 @@ pk_engine_offline_method_call (GDBusConnection *connection_, const gchar *sender
|
||||
polkit_authority_check_authorization (engine->priv->authority, subject,
|
||||
"org.freedesktop.packagekit.trigger-offline-update",
|
||||
NULL,
|
||||
- POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
|
||||
+ get_polkit_flags_for_dbus_invocation (invocation),
|
||||
NULL,
|
||||
pk_engine_offline_helper_cb,
|
||||
helper);
|
||||
@@ -1618,7 +1630,7 @@ pk_engine_offline_method_call (GDBusConnection *connection_, const gchar *sender
|
||||
polkit_authority_check_authorization (engine->priv->authority, subject,
|
||||
"org.freedesktop.packagekit.clear-offline-update",
|
||||
NULL,
|
||||
- POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
|
||||
+ get_polkit_flags_for_dbus_invocation (invocation),
|
||||
NULL,
|
||||
pk_engine_offline_helper_cb,
|
||||
helper);
|
||||
@@ -1645,7 +1657,7 @@ pk_engine_offline_method_call (GDBusConnection *connection_, const gchar *sender
|
||||
polkit_authority_check_authorization (engine->priv->authority, subject,
|
||||
"org.freedesktop.packagekit.trigger-offline-update",
|
||||
NULL,
|
||||
- POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
|
||||
+ get_polkit_flags_for_dbus_invocation (invocation),
|
||||
NULL,
|
||||
pk_engine_offline_helper_cb,
|
||||
helper);
|
||||
@@ -1672,7 +1684,7 @@ pk_engine_offline_method_call (GDBusConnection *connection_, const gchar *sender
|
||||
polkit_authority_check_authorization (engine->priv->authority, subject,
|
||||
"org.freedesktop.packagekit.trigger-offline-upgrade",
|
||||
NULL,
|
||||
- POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
|
||||
+ get_polkit_flags_for_dbus_invocation (invocation),
|
||||
NULL,
|
||||
pk_engine_offline_helper_cb,
|
||||
helper);
|
||||
--
|
||||
2.40.0
|
||||
|
Loading…
Reference in new issue