diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2020-02-10 19:18:54 +0000 |
---|---|---|
committer | Laurent Bercot <ska-skaware@skarnet.org> | 2020-02-10 19:18:54 +0000 |
commit | dd478a768bce79bcf6c627310e2ddb473667fecc (patch) | |
tree | bbdb160af2b5ac822ffc0572304b17ea9b0818f8 | |
parent | 540cefac9d8e663dfb3ad69b0bb806a9ba5e88b4 (diff) | |
download | skalibs-dd478a768bce79bcf6c627310e2ddb473667fecc.tar.xz |
bugfix: env_merge didn't correctly handle variable removal
-rw-r--r-- | AUTHORS | 1 | ||||
-rw-r--r-- | src/libstddjb/env_merge.c | 3 |
2 files changed, 3 insertions, 1 deletions
@@ -36,3 +36,4 @@ Thanks to: Johannes Nixdorf <mixi@shadowice.org> Casper Ti. Vector <caspervector@gmail.com> Guillermo <gdiazhartusch@gmail.com> + Alex Raschi <raschi.alex@gmail.com> diff --git a/src/libstddjb/env_merge.c b/src/libstddjb/env_merge.c index 9129cf3..5543e08 100644 --- a/src/libstddjb/env_merge.c +++ b/src/libstddjb/env_merge.c @@ -16,7 +16,8 @@ size_t env_merge (char const **v, size_t vmax, char const *const *envp, size_t e { size_t split = str_chr(modifs + i, '=') ; size_t j = 0 ; - for (; j < vlen ; j++) if (!strncmp(modifs + i, v[j], split+1)) break ; + for (; j < vlen ; j++) + if (!strncmp(modifs + i, v[j], split) && (v[j][split] == '=')) break ; if (j < vlen) v[j] = v[--vlen] ; if (modifs[i + split]) v[vlen++] = modifs + i ; } |