]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/dbus-manager: use PidRef for log_caller()
authorMike Yuan <me@yhndnzj.com>
Tue, 2 Jul 2024 15:54:11 +0000 (17:54 +0200)
committerMike Yuan <me@yhndnzj.com>
Wed, 3 Jul 2024 08:11:21 +0000 (10:11 +0200)
This is only for logging, but since we lookup for the unit
here, let's try to be accurate.

src/core/dbus-manager.c

index 6001dccd6eac16cb81ede768cd6acf42554c7dfb..207dbac52a00e06cfb76cd3db23f5539379138e1 100644 (file)
@@ -1553,26 +1553,27 @@ static int verify_run_space_permissive(const char *message, sd_bus_error *error)
 
 static void log_caller(sd_bus_message *message, Manager *manager, const char *method) {
         _cleanup_(sd_bus_creds_unrefp) sd_bus_creds *creds = NULL;
-        const char *comm = NULL;
-        Unit *caller;
-        pid_t pid;
+        _cleanup_(pidref_done) PidRef pidref = PIDREF_NULL;
 
         assert(message);
         assert(manager);
         assert(method);
 
-        if (sd_bus_query_sender_creds(message, SD_BUS_CREDS_PID|SD_BUS_CREDS_AUGMENT|SD_BUS_CREDS_COMM, &creds) < 0)
+        if (sd_bus_query_sender_creds(message, SD_BUS_CREDS_PID|SD_BUS_CREDS_PIDFD|SD_BUS_CREDS_AUGMENT|SD_BUS_CREDS_COMM, &creds) < 0)
                 return;
 
-        /* We need at least the PID, otherwise there's nothing to log, the rest is optional */
-        if (sd_bus_creds_get_pid(creds, &pid) < 0)
+        /* We need at least the PID, otherwise there's nothing to log, the rest is optional. */
+        if (bus_creds_get_pidref(creds, &pidref) < 0)
                 return;
 
+        const char *comm = NULL;
+        Unit *caller;
+
         (void) sd_bus_creds_get_comm(creds, &comm);
-        caller = manager_get_unit_by_pid(manager, pid);
+        caller = manager_get_unit_by_pidref(manager, &pidref);
 
         log_info("%s requested from client PID " PID_FMT "%s%s%s%s%s%s...",
-                 method, pid,
+                 method, pidref.pid,
                  comm ? " ('" : "", strempty(comm), comm ? "')" : "",
                  caller ? " (unit " : "", caller ? caller->id : "", caller ? ")" : "");
 }