The shell spawned in run-command.c:prepare_shell_cmd was hard coded to
'sh'. Instead, make this a macro named SHELL_PATH so that it can be
overridden by the build system. Use 'sh' as the default to preserve
original behaviour and ensure that a value is always set.
This avoids a situation where some commands were spawned using a
different shell than the one configured at build time. Previously, it
was possible for things to be executed by a non-POSIX shell depending
on the user's PATH.
Signed-off-by: Ben Walton <redacted>
---
run-command.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/run-command.c b/run-command.c
index 1db8abf..f005a31 100644
--- a/run-command.c
+++ b/run-command.c
@@ -4,6 +4,10 @@
#include "sigchain.h"
#include "argv-array.h"
+#ifndef SHELL_PATH
+# define SHELL_PATH "sh"
+#endif
+
struct child_to_clean {
pid_t pid;
struct child_to_clean *next;@@ -90,7 +94,7 @@ static const char **prepare_shell_cmd(const char **argv)
die("BUG: shell command is empty");
if (strcspn(argv[0], "|&;<>()$`\\\"' \t\n*?[#~=%") != strlen(argv[0])) {
- nargv[nargc++] = "sh";
+ nargv[nargc++] = SHELL_PATH;
nargv[nargc++] = "-c";
if (argc < 2)--
1.7.5.4