Skip to content

Commit 048dfa6

Browse files
committed
fix memory leak when parsing environment variables
1 parent 8a0fbc7 commit 048dfa6

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

lib/runcmd.c

+6
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ int runcmd_cmd2strv(const char *str, int *out_argc, char **out_argv, int *out_en
140140
len = strlen(str);
141141
envz = malloc(len + 1);
142142
*out_envc = env;
143+
out_env[0] = envz;
143144
for (i = 0; i < len && continue_env_parsing; i++) {
144145
const char *p = &str[i];
145146

@@ -472,6 +473,8 @@ int runcmd_open(const char *cmd, int *pfd, int *pfderr)
472473
argv[2] = strdup(cmd);
473474
if (!argv[2]) {
474475
free(argv);
476+
free(env[0]);
477+
free(env);
475478
return RUNCMD_EALLOC;
476479
}
477480
argv[3] = NULL;
@@ -549,6 +552,8 @@ int runcmd_open(const char *cmd, int *pfd, int *pfderr)
549552
free(argv[0]);
550553
else
551554
free(argv[2]);
555+
free(env[0]);
556+
free(env);
552557
_exit(errno);
553558
}
554559

@@ -565,6 +570,7 @@ int runcmd_open(const char *cmd, int *pfd, int *pfderr)
565570
else
566571
free(argv[2]);
567572
free(argv);
573+
free(env[0]);
568574
free(env);
569575

570576
/* tag our file's entry in the pid-list and return it */

0 commit comments

Comments
 (0)