exec: also evaluate working_directory_missing_ok when not applying chroots
authorLennart Poettering <lennart@poettering.net>
Thu, 12 Feb 2015 17:58:43 +0000 (18:58 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 12 Feb 2015 17:58:43 +0000 (18:58 +0100)
src/core/execute.c

index 1f6072c..340b800 100644 (file)
@@ -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;
                 }