From cd14ac0486906d607b5ef6ade70460c64aec00cf Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 26 May 2016 12:15:42 +0000 Subject: [PATCH] Just nuke environ instead of trying to unsetenv everything because that doesn't necessarily work if there is an entry with an empty name. --- environ.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/environ.c b/environ.c index d855f8b5..31e57e0e 100644 --- a/environ.c +++ b/environ.c @@ -195,19 +195,11 @@ environ_update(const char *vars, struct environ *srcenv, void environ_push(struct environ *env) { - struct environ_entry *envent; - char *v; - - while (*environ != NULL) { - v = xstrdup(*environ); - v[strcspn(v, "=")] = '\0'; - - unsetenv(v); - free(v); - } + struct environ_entry *envent; + environ = xcalloc(1, sizeof *environ); RB_FOREACH(envent, environ, env) { - if (envent->value != NULL) + if (envent->value != NULL && *envent->name != '\0') setenv(envent->name, envent->value, 1); } }