]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
shared: log error when execve fail
authorMauri de Souza Meneguzzo <mauri870@gmail.com>
Tue, 25 Jun 2024 02:47:15 +0000 (23:47 -0300)
committerLuca Boccassi <luca.boccassi@gmail.com>
Mon, 22 Jul 2024 09:12:35 +0000 (10:12 +0100)
If there is an error with the execv call in fork_agent the
program exits without any meaningful log message. Log the
command and errno so the user gets more information about
the failure.

Fixes: #33418
Signed-off-by: Mauri de Souza Meneguzzo <mauri870@gmail.com>
src/shared/exec-util.c
src/shared/polkit-agent.c

index 5408be5328b2e21155b7a02cf8454bf605daca9a..b02361a57916c40261d1da40d21e870d87da1328 100644 (file)
@@ -606,5 +606,6 @@ int fork_agent(const char *name, const int except[], size_t n_except, pid_t *ret
         va_end(ap);
 
         execv(path, l);
+        log_error_errno(errno, "Failed to execute %s: %m", path);
         _exit(EXIT_FAILURE);
 }
index a891246156da80f1f7b4a862fea965cb5a6010e3..93c15c29e76cd4d7535f1e74ef275a1b289a302b 100644 (file)
@@ -43,16 +43,21 @@ int polkit_agent_open(void) {
         xsprintf(notify_fd, "%i", pipe_fd[1]);
 
         r = fork_agent("(polkit-agent)",
-                       &pipe_fd[1], 1,
+                       &pipe_fd[1],
+                       1,
                        &agent_pid,
                        POLKIT_AGENT_BINARY_PATH,
-                       POLKIT_AGENT_BINARY_PATH, "--notify-fd", notify_fd, "--fallback", NULL);
+                       POLKIT_AGENT_BINARY_PATH,
+                       "--notify-fd",
+                       notify_fd,
+                       "--fallback",
+                       NULL);
 
         /* Close the writing side, because that's the one for the agent */
         safe_close(pipe_fd[1]);
 
         if (r < 0)
-                log_error_errno(r, "Failed to fork TTY ask password agent: %m");
+                log_error_errno(r, "Failed to fork polkit agent: %m");
         else
                 /* Wait until the agent closes the fd */
                 (void) fd_wait_for_event(pipe_fd[0], POLLHUP, USEC_INFINITY);