From: Yu Watanabe Date: Wed, 6 Feb 2019 16:52:41 +0000 (+0100) Subject: core/dbus-service: empty assignment to PIDFile= resets the value X-Git-Tag: v241~25^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F11663%2Fhead;p=thirdparty%2Fsystemd.git core/dbus-service: empty assignment to PIDFile= resets the value Follow-up for a9353a5c5b512f107955e56a9812724f40b841d3. --- diff --git a/src/core/dbus-service.c b/src/core/dbus-service.c index 10470a3f70e..0904cc09c02 100644 --- a/src/core/dbus-service.c +++ b/src/core/dbus-service.c @@ -320,32 +320,34 @@ static int bus_service_set_transient_property( if (r < 0) return r; - n = path_make_absolute(v, u->manager->prefix[EXEC_DIRECTORY_RUNTIME]); - if (!n) - return -ENOMEM; + if (!isempty(v)) { + n = path_make_absolute(v, u->manager->prefix[EXEC_DIRECTORY_RUNTIME]); + if (!n) + return -ENOMEM; - path_simplify(n, true); + path_simplify(n, true); - if (!path_is_normalized(n)) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "PIDFile= path '%s' is not valid", n); + if (!path_is_normalized(n)) + return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "PIDFile= path '%s' is not valid", n); - e = path_startswith(n, "/var/run/"); - if (e) { - char *z; + e = path_startswith(n, "/var/run/"); + if (e) { + char *z; - z = strjoin("/run/", e); - if (!z) - return log_oom(); + z = strjoin("/run/", e); + if (!z) + return log_oom(); - if (!UNIT_WRITE_FLAGS_NOOP(flags)) - log_unit_notice(u, "Transient unit's PIDFile= property references path below legacy directory /var/run, updating %s → %s; please update client accordingly.", n, z); + if (!UNIT_WRITE_FLAGS_NOOP(flags)) + log_unit_notice(u, "Transient unit's PIDFile= property references path below legacy directory /var/run, updating %s → %s; please update client accordingly.", n, z); - free_and_replace(n, z); + free_and_replace(n, z); + } } if (!UNIT_WRITE_FLAGS_NOOP(flags)) { free_and_replace(s->pid_file, n); - unit_write_settingf(u, flags, name, "%s=%s", name, s->pid_file); + unit_write_settingf(u, flags, name, "%s=%s", name, strempty(s->pid_file)); } return 1;