From: Carlos Santos Date: Thu, 25 Jul 2024 21:39:59 +0000 (-0300) Subject: vncsession: use /bin/sh if the user shell is not set X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=4db34f73d461b973867ddaf18bf690219229cd7a;p=tigervnc.git vncsession: use /bin/sh if the user shell is not set An empty shell field in the password file is valid, although not common. Use /bin/sh in this case, as documented in the passwd(5) man page, since the vncserver script requires a non-empty SHELL environment variable. Fixes issue #1786. Signed-off-by: Carlos Santos --- diff --git a/unix/vncserver/vncsession.c b/unix/vncserver/vncsession.c index 1ee096c7..98a0432a 100644 --- a/unix/vncserver/vncsession.c +++ b/unix/vncserver/vncsession.c @@ -545,7 +545,7 @@ run_script(const char *username, const char *display, char **envp) // Set up some basic environment for the script setenv("HOME", pwent->pw_dir, 1); - setenv("SHELL", pwent->pw_shell, 1); + setenv("SHELL", *pwent->pw_shell != '\0' ? pwent->pw_shell : "/bin/sh", 1); setenv("LOGNAME", pwent->pw_name, 1); setenv("USER", pwent->pw_name, 1); setenv("USERNAME", pwent->pw_name, 1);