]> granicus.if.org Git - sudo/commitdiff
On AIX, _PATH_BSHELL is /usr/bin/bsh but we want to use /usr/bin/sh
authorTodd C. Miller <Todd.Miller@courtesan.com>
Sat, 20 Sep 2014 15:21:51 +0000 (09:21 -0600)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Sat, 20 Sep 2014 15:21:51 +0000 (09:21 -0600)
(which is usually ksh).  This makes sudo's behavior when executing
a shell without the #! magic number match execvp() on AIX.

pathnames.h.in
src/exec_common.c
src/sudo.c

index f6d247270908f2c886e58929e2984a340e16cc37..797cc037c9bdf4a399d6b62a6724a24cb454432f 100644 (file)
 #ifndef _PATH_NETSVC_CONF
 # undef        _PATH_NETSVC_CONF
 #endif /* _PATH_NETSVC_CONF */
+
+/* On AIX, _PATH_BSHELL is /usr/bin/bsh but we want /usr/bin/sh */
+#ifndef _PATH_SUDO_BSHELL
+# ifdef _AIX
+#  define _PATH_SUDO_BSHELL "/usr/bin/sh"
+# else
+#  define _PATH_SUDO_BSHELL _PATH_BSHELL
+# endif
+#endif /* _PATH_SUDO_BSHELL */
index 4d8a597dfda37ef364ac24af4da63374aa2d0ae6..914fc70238d9a3f466d308ffae8115dfea36eb5a 100644 (file)
@@ -155,7 +155,7 @@ sudo_execve(const char *path, char *const argv[], char *const envp[], bool noexe
        nargv[0] = "sh";
        nargv[1] = (char *)path;
        memcpy(nargv + 2, argv + 1, argc * sizeof(char *));
-       execve(_PATH_BSHELL, nargv, envp);
+       execve(_PATH_SUDO_BSHELL, nargv, envp);
        sudo_efree(nargv);
     }
     return -1;
index aa66e5ba722d943935b86021ec6e21594c6384d9..164014c41a600d7b5feb79ae2c9db1bcab4b730b 100644 (file)
@@ -471,7 +471,7 @@ get_user_info(struct user_details *ud)
 
     /* Stash user's shell for use with the -s flag; don't pass to plugin. */
     if ((ud->shell = getenv("SHELL")) == NULL || ud->shell[0] == '\0') {
-       ud->shell = pw->pw_shell[0] ? pw->pw_shell : _PATH_BSHELL;
+       ud->shell = pw->pw_shell[0] ? pw->pw_shell : _PATH_SUDO_BSHELL;
     }
     ud->shell = sudo_estrdup(ud->shell);