8 Ocak 2021 Cuma tarihinde Chet Ramey <chet.ra...@case.edu> yazdı:

> On 1/8/21 5:20 AM, Oğuz wrote:
>
>> See:
>>
>>      $ declare -A assoc=($'\n\'' 42)
>>      $ for key in "${!assoc[@]}"; do (( assoc[$key]++ )); done
>>      bash: ((: assoc[
>>      ']++ : bad array subscript (error token is "assoc[
>>      ']++ ")
>>      $
>>      $ (( assoc[${key@Q}]++ ))
>>      bash: ((: assoc[$'\n\'']++ : bad array subscript (error token is
>> "assoc[$'\n\'']++ ")
>>
>
> This situation is why bash-5.0 introduced the `assoc_expand_once' option.


But it allows arbitrary command injection.

    $ declare -A assoc
    $ key='x],b[$(uname >&2)'
    $ shopt -s assoc_expand_once
    $ (( assoc[$key]++ ))
    Linux


> --
> ``The lyf so short, the craft so long to lerne.'' - Chaucer
>                  ``Ars longa, vita brevis'' - Hippocrates
> Chet Ramey, UTech, CWRU    c...@case.edu    http://tiswww.cwru.edu/~chet/
>


-- 
Oğuz

Reply via email to