From: Todd C. Miller Date: Tue, 11 Sep 2012 14:22:37 +0000 (-0400) Subject: Fix duplicate detection in sudo_putenv(), do not prune out the X-Git-Tag: SUDO_1_8_6p1~1^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6beab19148de66d6c10e19735fbeb2c24c15ac54;p=sudo Fix duplicate detection in sudo_putenv(), do not prune out the variable we just set when overwriting an existing instance. Fixes bug #570 --- diff --git a/plugins/sudoers/env.c b/plugins/sudoers/env.c index 51ee912d2..46a255956 100644 --- a/plugins/sudoers/env.c +++ b/plugins/sudoers/env.c @@ -324,15 +324,14 @@ sudo_putenv_nodebug(char *str, bool dupcheck, bool overwrite) break; } } - /* Prune out duplicate variables. */ + /* Prune out extra instances of the variable we just overwrote. */ if (found && overwrite) { - while (*ep != NULL) { + while (*++ep != NULL) { if (strncmp(str, *ep, len) == 0) { char **cur = ep; while ((*cur = *(cur + 1)) != NULL) cur++; - } else { - ep++; + ep--; } } env.env_len = ep - env.envp;