From 16ed767007722d7450e6f5a4e23fff0166f466dc Mon Sep 17 00:00:00 2001 From: Radoslaw Pajak Date: Thu, 7 Nov 2013 11:24:39 +0100 Subject: [PATCH] [daemon-fix] fixed getting uid and pid when transport is not kdbus Fixed getting uid and pid when damoen is compiled with kdbus transport, but sockets are used as transport. Change-Id: I038920b03a352c44639d09284baa07f336dfd216 Signed-off-by: Radoslaw Pajak --- bus/kdbus-d.c | 11 +++++++++-- dbus/dbus-connection.c | 14 ++++++++++++-- dbus/dbus-connection.h | 8 ++++++++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/bus/kdbus-d.c b/bus/kdbus-d.c index e2bfdb6..70a1a86 100644 --- a/bus/kdbus-d.c +++ b/bus/kdbus-d.c @@ -35,6 +35,7 @@ #include "connection.h" #include "activation.h" #include "services.h" +#include #include #include @@ -763,7 +764,10 @@ dbus_connection_get_unix_user (DBusConnection *connection, _dbus_return_val_if_fail (connection != NULL, FALSE); _dbus_return_val_if_fail (uid != NULL, FALSE); - return kdbus_get_unix_user(connection, bus_connection_get_name(connection), uid, NULL); + if(bus_context_is_kdbus(bus_connection_get_context (connection))) + return kdbus_get_unix_user(connection, bus_connection_get_name(connection), uid, NULL); + + return dbus_connection_get_unix_user_dbus(connection, uid); } /** @@ -781,7 +785,10 @@ dbus_connection_get_unix_process_id (DBusConnection *connection, _dbus_return_val_if_fail (connection != NULL, FALSE); _dbus_return_val_if_fail (pid != NULL, FALSE); - return kdbus_get_connection_unix_process_id(connection, bus_connection_get_name(connection), pid, NULL); + if(bus_context_is_kdbus(bus_connection_get_context (connection))) + return kdbus_get_connection_unix_process_id(connection, bus_connection_get_name(connection), pid, NULL); + + return dbus_connection_get_unix_process_id_dbus(connection, pid); } /* diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c index 34eddb5..401e888 100644 --- a/dbus/dbus-connection.c +++ b/dbus/dbus-connection.c @@ -5232,7 +5232,6 @@ dbus_connection_get_socket(DBusConnection *connection, return retval; } -#ifndef ENABLE_KDBUS_TRANSPORT /** * Gets the UNIX user ID of the connection if known. Returns #TRUE if * the uid is filled in. Always returns #FALSE on non-UNIX platforms @@ -5255,9 +5254,15 @@ dbus_connection_get_socket(DBusConnection *connection, * @param uid return location for the user ID * @returns #TRUE if uid is filled in with a valid user ID */ +#ifdef ENABLE_KDBUS_TRANSPORT +dbus_bool_t +dbus_connection_get_unix_user_dbus (DBusConnection *connection, + unsigned long *uid) +#else dbus_bool_t dbus_connection_get_unix_user (DBusConnection *connection, unsigned long *uid) +#endif { dbus_bool_t result; @@ -5291,9 +5296,15 @@ dbus_connection_get_unix_user (DBusConnection *connection, * @param pid return location for the process ID * @returns #TRUE if uid is filled in with a valid process ID */ +#ifdef ENABLE_KDBUS_TRANSPORT +dbus_bool_t +dbus_connection_get_unix_process_id_dbus (DBusConnection *connection, + unsigned long *pid) +#else dbus_bool_t dbus_connection_get_unix_process_id (DBusConnection *connection, unsigned long *pid) +#endif { dbus_bool_t result; @@ -5312,7 +5323,6 @@ dbus_connection_get_unix_process_id (DBusConnection *connection, return result; } -#endif /** * Gets the ADT audit data of the connection if any. diff --git a/dbus/dbus-connection.h b/dbus/dbus-connection.h index faabc88..c83d435 100644 --- a/dbus/dbus-connection.h +++ b/dbus/dbus-connection.h @@ -277,6 +277,14 @@ dbus_bool_t dbus_connection_get_unix_user (DBusConnection DBUS_EXPORT dbus_bool_t dbus_connection_get_unix_process_id (DBusConnection *connection, unsigned long *pid); +#ifdef ENABLE_KDBUS_TRANSPORT +DBUS_EXPORT +dbus_bool_t dbus_connection_get_unix_user_dbus (DBusConnection *connection, + unsigned long *uid); +DBUS_EXPORT +dbus_bool_t dbus_connection_get_unix_process_id_dbus (DBusConnection *connection, + unsigned long *pid); +#endif DBUS_EXPORT dbus_bool_t dbus_connection_get_adt_audit_session_data (DBusConnection *connection, void **data, -- 2.7.4