]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/exec-invoke: replace basename() with path_extract_filename() (#32076)
authorJulius Alexandre <61852278+medievalghoul@users.noreply.github.com>
Wed, 3 Apr 2024 21:44:51 +0000 (21:44 +0000)
committerGitHub <noreply@github.com>
Wed, 3 Apr 2024 21:44:51 +0000 (06:44 +0900)
src/core/exec-invoke.c

index dd8bcb18952c7668f7543c64ee408cd04b24c5c0..ee2c1247a9f0cf8f4316fa5b719be23b39e7f0b0 100644 (file)
@@ -4302,13 +4302,20 @@ int exec_invoke(
                 return log_exec_error_errno(context, params, r, "Failed to set up standard input: %m");
         }
 
-        r = setup_output(context, params, STDOUT_FILENO, socket_fd, named_iofds, basename(command->path), uid, gid, &journal_stream_dev, &journal_stream_ino);
+        _cleanup_free_ char *fname = NULL;
+        r = path_extract_filename(command->path, &fname);
+        if (r < 0) {
+                *exit_status = EXIT_STDOUT;
+                return log_exec_error_errno(context, params, r, "Failed to extract filename from path %s: %m", command->path);
+        }
+
+        r = setup_output(context, params, STDOUT_FILENO, socket_fd, named_iofds, fname, uid, gid, &journal_stream_dev, &journal_stream_ino);
         if (r < 0) {
                 *exit_status = EXIT_STDOUT;
                 return log_exec_error_errno(context, params, r, "Failed to set up standard output: %m");
         }
 
-        r = setup_output(context, params, STDERR_FILENO, socket_fd, named_iofds, basename(command->path), uid, gid, &journal_stream_dev, &journal_stream_ino);
+        r = setup_output(context, params, STDERR_FILENO, socket_fd, named_iofds, fname, uid, gid, &journal_stream_dev, &journal_stream_ino);
         if (r < 0) {
                 *exit_status = EXIT_STDERR;
                 return log_exec_error_errno(context, params, r, "Failed to set up standard error output: %m");