]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/dbus-execute: path is required if stdio is specified as file
authorMike Yuan <me@yhndnzj.com>
Sat, 22 Nov 2025 02:55:41 +0000 (03:55 +0100)
committerLuca Boccassi <bluca@debian.org>
Wed, 17 Dec 2025 23:23:22 +0000 (23:23 +0000)
This partially reverts d6ff82d37cae5910a0c62bf830e3cfa70df1e23f.

src/core/dbus-execute.c

index b7d8b4b5ff8d52f1b326d6f9e0ef5ca9dc3c1666..8f09cb68bff5cb93b04a9da95818d9d5989604bc 100644 (file)
@@ -3338,17 +3338,15 @@ int bus_exec_context_set_transient_property(
                 if (r < 0)
                         return r;
 
-                if (!isempty(s)) {
-                        if (!path_is_absolute(s))
-                                return sd_bus_error_setf(reterr_error, SD_BUS_ERROR_INVALID_ARGS, "Path %s is not absolute", s);
-                        if (!path_is_normalized(s))
-                                return sd_bus_error_setf(reterr_error, SD_BUS_ERROR_INVALID_ARGS, "Path %s is not normalized", s);
-                }
+                if (!path_is_absolute(s))
+                        return sd_bus_error_setf(reterr_error, SD_BUS_ERROR_INVALID_ARGS, "Path %s is not absolute", s);
+                if (!path_is_normalized(s))
+                        return sd_bus_error_setf(reterr_error, SD_BUS_ERROR_INVALID_ARGS, "Path %s is not normalized", s);
 
                 if (!UNIT_WRITE_FLAGS_NOOP(flags)) {
 
                         if (streq(name, "StandardInputFile")) {
-                                r = free_and_strdup(&c->stdio_file[STDIN_FILENO], empty_to_null(s));
+                                r = free_and_strdup(&c->stdio_file[STDIN_FILENO], s);
                                 if (r < 0)
                                         return r;
 
@@ -3356,7 +3354,7 @@ int bus_exec_context_set_transient_property(
                                 unit_write_settingf(u, flags|UNIT_ESCAPE_SPECIFIERS, name, "StandardInput=file:%s", s);
 
                         } else if (STR_IN_SET(name, "StandardOutputFile", "StandardOutputFileToAppend", "StandardOutputFileToTruncate")) {
-                                r = free_and_strdup(&c->stdio_file[STDOUT_FILENO], empty_to_null(s));
+                                r = free_and_strdup(&c->stdio_file[STDOUT_FILENO], s);
                                 if (r < 0)
                                         return r;
 
@@ -3374,7 +3372,7 @@ int bus_exec_context_set_transient_property(
                         } else {
                                 assert(STR_IN_SET(name, "StandardErrorFile", "StandardErrorFileToAppend", "StandardErrorFileToTruncate"));
 
-                                r = free_and_strdup(&c->stdio_file[STDERR_FILENO], empty_to_null(s));
+                                r = free_and_strdup(&c->stdio_file[STDERR_FILENO], s);
                                 if (r < 0)
                                         return r;