[Toybox] [PATCH] env: fix case where a variable is replaced.

enh enh at google.com
Fri May 3 12:48:37 PDT 2019


(long version: the version of tar in Q is a mess, so even at this late
stage i'm tempted to try to sync with AOSP master, but i can't move
forward because env is broken.)

On Fri, May 3, 2019 at 12:47 PM enh <enh at google.com> wrote:
>
> ping?
>
> On Thu, May 2, 2019 at 6:47 PM enh <enh at google.com> wrote:
> >
> > Found when trying to update the toybox prebuilt used for the Android
> > build.
> >
> > Also add the corresponding test.
> > ---
> >  lib/env.c      | 4 +---
> >  tests/env.test | 2 ++
> >  2 files changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/lib/env.c b/lib/env.c
> > index 35ef688c..bc23b753 100644
> > --- a/lib/env.c
> > +++ b/lib/env.c
> > @@ -58,11 +58,9 @@ void xsetenv(char *name, char *val)
> >      if (!memcmp(name, environ[i], len) && environ[i][len]=='=') {
> >        if (i>=envc) free(environ[i]);
> >        else {
> > -        char **delete = environ+i;
> > -
> >          // move old entries down, add at end of old data
> >          toys.envc = envc--;
> > -        for (i=0; new ? i<envc : !!delete[i]; i++) delete[i] = delete[i+1];
> > +        for (; new ? i<envc : !!environ[i]; i++) environ[i] = environ[i+1];
> >          i = envc;
> >        }
> >        break;
> > diff --git a/tests/env.test b/tests/env.test
> > index 3098731d..4df118dd 100755
> > --- a/tests/env.test
> > +++ b/tests/env.test
> > @@ -19,3 +19,5 @@ unset WALRUS BANANA LETTERS FILTER
> >
> >  testcmd "early fail" '--oops 2> /dev/null ; echo $?' "125\n" "" ""
> >  testcmd "why is this allowed" "=BLAH env | grep '^=BLAH\$'" "=BLAH\n" "" ""
> > +
> > +testcmd "replace" "A=foo PATH= `which printenv` A" "foo\n" "" ""
> > --
> > 2.21.0.1020.gf2820cf01a-goog



More information about the Toybox mailing list