summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--contrib/dialog/prgbox.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/contrib/dialog/prgbox.c b/contrib/dialog/prgbox.c
index fea2393..8c9f627 100644
--- a/contrib/dialog/prgbox.c
+++ b/contrib/dialog/prgbox.c
@@ -33,8 +33,7 @@ dlg_popen(const char *command, const char *type)
FILE *result = 0;
int fd[2];
int pid;
- char *blob;
- char **argv;
+ const char *argv[4];
if ((*type == 'r' || *type != 'w') && pipe(fd) == 0) {
switch (pid = fork()) {
@@ -63,11 +62,11 @@ dlg_popen(const char *command, const char *type)
* given command. Also, it needs the command to be parsed into
* tokens.
*/
- if ((blob = malloc(4 + strlen(command))) != 0) {
- sprintf(blob, "-c %s", command);
- argv = dlg_string_to_argv(blob);
- execvp("sh", argv);
- }
+ argv[0] = "sh";
+ argv[1] = "-c";
+ argv[2] = command;
+ argv[3] = NULL;
+ execvp("sh", (char **)argv);
_exit(127);
/* NOTREACHED */
default: /* parent */
OpenPOWER on IntegriCloud