From 27660b470fc2ad5f70d8735dfbb382aabbe3ac0e Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Sat, 22 Nov 2025 03:55:41 +0100 Subject: [PATCH] core/dbus-execute: path is required if stdio is specified as file This partially reverts d6ff82d37cae5910a0c62bf830e3cfa70df1e23f. --- src/core/dbus-execute.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c index b7d8b4b5ff8..8f09cb68bff 100644 --- a/src/core/dbus-execute.c +++ b/src/core/dbus-execute.c @@ -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; -- 2.47.3