summaryrefslogtreecommitdiffstats
path: root/environ.c
diff options
context:
space:
mode:
authornicm <nicm>2015-01-25 16:53:46 +0000
committernicm <nicm>2015-01-25 16:53:46 +0000
commitadcc71d4d5d338d0f7d13867e59a11741eb36afa (patch)
tree21e5f5bcae4e2f8893c407c023a332b62fd03e8d /environ.c
parentc38f0d85da44d83ea69c6586a1aef428d9f489d0 (diff)
Don't leak the individual strings when copying environment.
Diffstat (limited to 'environ.c')
-rw-r--r--environ.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/environ.c b/environ.c
index 284f8b55..0dd91783 100644
--- a/environ.c
+++ b/environ.c
@@ -168,8 +168,11 @@ environ_push(struct environ *env)
var[strcspn(var, "=")] = '\0';
ARRAY_ADD(&varlist, var);
}
- for (i = 0; i < ARRAY_LENGTH(&varlist); i++)
- unsetenv(ARRAY_ITEM(&varlist, i));
+ for (i = 0; i < ARRAY_LENGTH(&varlist); i++) {
+ var = ARRAY_ITEM(&varlist, i);
+ unsetenv(var);
+ free(var);
+ }
ARRAY_FREE(&varlist);
RB_FOREACH(envent, environ, env) {