Don't try to change directory if it is NULL.
authornicm <nicm>
Mon, 8 Sep 2025 11:21:56 +0000 (8 11:21 +0000)
committernicm <nicm>
Mon, 8 Sep 2025 11:21:56 +0000 (8 11:21 +0000)
job.c

diff --git a/job.c b/job.c
index ceac8d2..5ad179f 100644 (file)
--- a/job.c
+++ b/job.c
@@ -52,7 +52,7 @@ struct job {
 
        char                    *cmd;
        pid_t                    pid;
-       char                     tty[TTY_NAME_MAX];
+       char                     tty[TTY_NAME_MAX];
        int                      status;
 
        int                      fd;
@@ -141,14 +141,16 @@ job_run(const char *cmd, int argc, char **argv, struct environ *e,
                proc_clear_signals(server_proc, 1);
                sigprocmask(SIG_SETMASK, &oldset, NULL);
 
-               if (chdir(cwd) == 0)
-                       environ_set(env, "PWD", 0, "%s", cwd);
-               else if ((home = find_home()) != NULL && chdir(home) == 0)
-                       environ_set(env, "PWD", 0, "%s", home);
-               else if (chdir("/") == 0)
-                       environ_set(env, "PWD", 0, "/");
-               else
-                       fatal("chdir failed");
+               if (cwd != NULL) {
+                       if (chdir(cwd) == 0)
+                               environ_set(env, "PWD", 0, "%s", cwd);
+                       else if ((home = find_home()) != NULL && chdir(home) == 0)
+                               environ_set(env, "PWD", 0, "%s", home);
+                       else if (chdir("/") == 0)
+                               environ_set(env, "PWD", 0, "/");
+                       else
+                               fatal("chdir failed");
+               }
 
                environ_push(env);
                environ_free(env);