diff options
| author | Carson Fleming <cflems@cflems.net> | 2020-10-21 19:05:39 +0200 |
|---|---|---|
| committer | Carson Fleming <cflems@cflems.net> | 2020-10-21 19:05:39 +0200 |
| commit | cea9c9201069ff608bb53830773609584f15a28c (patch) | |
| tree | 6dd6f6f3c1d1a1b52fdc89dc00f4a09333a3a587 /daemonize.c | |
| parent | df387aae5c3d2e77b74559fb48f2a43c183e9bee (diff) | |
| download | daemonize-master.tar.gz | |
Diffstat (limited to 'daemonize.c')
| -rw-r--r-- | daemonize.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/daemonize.c b/daemonize.c index 7b9daac..001f260 100644 --- a/daemonize.c +++ b/daemonize.c @@ -89,15 +89,18 @@ int main (int argc, char** argv) { int arglen = strlen(argv[optind]); while (cmdlen+arglen+1 > buff_size) { buff_size *= 2; - buffer = realloc(buffer, buff_size); - if (buffer == NULL) q("[daemonize] Out of memory parsing arguments."); } + buffer = realloc(buffer, buff_size); + if (buffer == NULL) q("[daemonize] Out of memory parsing arguments."); strncpy(&buffer[cmdlen], argv[optind++], arglen); cmdlen += arglen+1; buffer[cmdlen-1] = ' '; } + buffer[cmdlen-1] = 0; - + char cmd[cmdlen]; + memcpy(cmd, buffer, cmdlen); + free(buffer); if (cmdlen < 1) qtoofewargs(); // Set up logs as appropriate @@ -125,6 +128,6 @@ int main (int argc, char** argv) { daemon(options.nochdir, options.noclose | logs); - char* args[] = {"/bin/sh", "-c", buffer, NULL}; + char* args[] = {"/bin/sh", "-c", cmd, NULL}; execv(args[0], args); } |
