]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
Improve diagnostics when UpdateActivationEnvironment calls are rejected
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Thu, 5 Mar 2015 12:32:05 +0000 (12:32 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Thu, 5 Mar 2015 13:09:07 +0000 (13:09 +0000)
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=88812
Reviewed-by: Colin Walters <walters@verbum.org>
[smcv: rebased to not require the extra code initially on that bug]

bus/driver.c

index aab922ae739ccf7c5f6df0a494599cecca2da3a0..23e75a21d956839739901bdcfca03a979850bff0 100644 (file)
 #include <dbus/dbus-marshal-validate.h>
 #include <string.h>
 
+static inline const char *
+nonnull (const char *maybe_null,
+         const char *if_null)
+{
+  return (maybe_null ? maybe_null : if_null);
+}
+
 static DBusConnection *
 bus_driver_get_owner_of_name (DBusConnection *connection,
                               const char     *name)
@@ -121,7 +128,10 @@ bus_driver_check_caller_is_privileged (DBusConnection *connection,
 
       bus_context_log_and_set_error (bus_transaction_get_context (transaction),
           DBUS_SYSTEM_LOG_SECURITY, error, DBUS_ERROR_ACCESS_DENIED,
-          "rejected attempt to call %s by unknown uid", method);
+          "rejected attempt to call %s by connection %s (%s) with "
+          "unknown uid", method,
+          nonnull (bus_connection_get_name (connection), "(inactive)"),
+          bus_connection_get_loginfo (connection));
       return FALSE;
     }
 
@@ -142,7 +152,10 @@ bus_driver_check_caller_is_privileged (DBusConnection *connection,
 
       bus_context_log_and_set_error (bus_transaction_get_context (transaction),
           DBUS_SYSTEM_LOG_SECURITY, error, DBUS_ERROR_ACCESS_DENIED,
-          "rejected attempt to call %s by uid %lu", method, uid);
+          "rejected attempt to call %s by connection %s (%s) with "
+          "uid %lu", method,
+          nonnull (bus_connection_get_name (connection), "(inactive)"),
+          bus_connection_get_loginfo (connection), uid);
       return FALSE;
     }