summaryrefslogtreecommitdiff
path: root/src/polkit/polkitauthority.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/polkit/polkitauthority.c')
-rw-r--r--src/polkit/polkitauthority.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/polkit/polkitauthority.c b/src/polkit/polkitauthority.c
index ab6d3cd..6bd684a 100644
--- a/src/polkit/polkitauthority.c
+++ b/src/polkit/polkitauthority.c
@@ -1492,6 +1492,14 @@ polkit_authority_authentication_agent_response (PolkitAuthority *authority,
gpointer user_data)
{
GVariant *identity_value;
+ /* Note that in reality, this API is only accessible to root, and
+ * only called from the setuid helper `polkit-agent-helper-1`.
+ *
+ * However, because this is currently public API, we avoid
+ * triggering warnings from ABI diff type programs by just grabbing
+ * the real uid of the caller here.
+ */
+ uid_t uid = getuid ();
g_return_if_fail (POLKIT_IS_AUTHORITY (authority));
g_return_if_fail (cookie != NULL);
@@ -1501,8 +1509,9 @@ polkit_authority_authentication_agent_response (PolkitAuthority *authority,
identity_value = polkit_identity_to_gvariant (identity);
g_variant_ref_sink (identity_value);
g_dbus_proxy_call (authority->proxy,
- "AuthenticationAgentResponse",
- g_variant_new ("(s@(sa{sv}))",
+ "AuthenticationAgentResponse2",
+ g_variant_new ("(us@(sa{sv}))",
+ (guint32)uid,
cookie,
identity_value),
G_DBUS_CALL_FLAGS_NONE,