2014-12-15 05:41:51 -0600, Dan Douglas:
> So I'm still getting caught up on this thread, but hasn't this issue been done
> to death in previous threads? Back when I was examining bash's strange declare
> -a, you were the very first person I found to notice its quasi-keyword 
> behavior
> 10 years ago
> (https://lists.gnu.org/archive/html/bug-bash/2004-09/msg00110.html). Perhaps
> you didn't realize what this was doing at the time?
[...]

I can't say I remember that one, but note that was a different
case that was later fixed. That was about:

    declare -a a=("$b")

where the content of $b was further evaluated.

$ b='$(uname>&2)' bash-2.05b -c 'declare -a a=("$b")'
Linux

That one was more clearly a bug as no one could really be
expected to escape the content of $b there.

I probably did not notice at the time that it was also the case
with:

declare -a a="(...)"

though it would never have occurred to me to use that syntax
(although it's true that's the syntax that is used by declare -p)

As previously mentionned, another related bug that was also
reported over 10 years ago:

http://lists.gnu.org/archive/html/bug-bash/2003-10/msg00065.html

That one was about:

a=($var) or a=(*) (without or without "declare") where the
resulting words may be of the form: [0]=foo (and then, I had
not realised at the time that it was a code injection
vulnerability as well):

$ a='[0$(uname>&2)]=foo' bash-2.05b -c 'b=("$a")'
Linux

-- 
Stephane

Reply via email to