From: Mike Yuan Date: Sat, 22 Nov 2025 02:55:41 +0000 (+0100) Subject: core/dbus-execute: path is required if stdio is specified as file X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27660b470fc2ad5f70d8735dfbb382aabbe3ac0e;p=thirdparty%2Fsystemd.git core/dbus-execute: path is required if stdio is specified as file This partially reverts d6ff82d37cae5910a0c62bf830e3cfa70df1e23f. --- 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;