summaryrefslogtreecommitdiff
path: root/src/fdevent.c
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2021-05-24 13:01:42 -0400
committerGlenn Strauss <gstrauss@gluelogic.com>2021-08-27 02:16:53 -0400
commit27b8f1d0b9a5e0542eb08b9d8788de5738c6b892 (patch)
treef3cbb7dde2990ce7a2eb50b600722f002240415c /src/fdevent.c
parent4a246a875424ab53a8d39975cdb83bf35ffa35ce (diff)
downloadlighttpd-git-27b8f1d0b9a5e0542eb08b9d8788de5738c6b892.tar.gz
[core] compare entire "/bin/sh" "-c" after execve
compare entire "/bin/sh" "-c" strings after execve if execve fails
Diffstat (limited to 'src/fdevent.c')
-rw-r--r--src/fdevent.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/fdevent.c b/src/fdevent.c
index 961347cb..cf587852 100644
--- a/src/fdevent.c
+++ b/src/fdevent.c
@@ -786,11 +786,11 @@ pid_t fdevent_fork_execve(const char *name, char *argv[], char *envp[], int fdin
execve(name, argv, envp ? envp : environ);
int errnum = errno;
- if (0 == memcmp(argv[0], "/bin/sh", sizeof("/bin/sh")-1)
- && argv[1] && 0 == memcmp(argv[1], "-c", sizeof("-c")-1))
- perror(argv[2]);
- else
- perror(argv[0]);
+ int argnum =
+ (0 == strcmp(argv[0], "/bin/sh") && argv[1] && 0 == strcmp(argv[1], "-c"))
+ ? 2
+ : 0;
+ perror(argv[argnum]);
_exit(errnum);
#else