diff options
-rw-r--r-- | src/core/execute.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/core/execute.c b/src/core/execute.c index 1f6072c6ab..340b8000d4 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -1626,13 +1626,14 @@ static int exec_child( _cleanup_free_ char *d = NULL; if (asprintf(&d, "%s/%s", - context->root_directory ? context->root_directory : "", - context->working_directory ? context->working_directory : "") < 0) { + context->root_directory ?: "", + context->working_directory ?: "") < 0) { *exit_status = EXIT_MEMORY; return -ENOMEM; } - if (chdir(d) < 0) { + if (chdir(d) < 0 && + !context->working_directory_missing_ok) { *exit_status = EXIT_CHDIR; return -errno; } |