gsu_getopts: Rename local variable opt to _gsu_getopts_opt.
authorAndre Noll <maan@systemlinux.org>
Wed, 12 Oct 2011 08:26:38 +0000 (10:26 +0200)
committerAndre Noll <maan@tuebingen.mpg.de>
Fri, 29 Aug 2014 19:39:58 +0000 (21:39 +0200)
As pointed out by Sebastian Stark, calling the loop variable "opt"
in code which is supposed to be eval'd by the application may conflict
with another local variable of the same name defined in the function
which calls gsu_getopt().

This could lead to rather obscure bugs which are hard to detect.
The callers don't use this loop variable directly, so we are free
to call it whatever we want. Therefore this patch renames $opt to
something which is much less likely to cause a conflict.

misc/gsu/subcommand

index e1130ef..7e706d8 100644 (file)
@@ -351,7 +351,7 @@ gsu_getopts()
                        exit 1
                esac
        done
-       result="local opt"
+       result="local _gsu_getopts_opt"
        for ((i=0; i < ${#1}; i++)); do
                c1=${1:$i:1}
                c2=${1:$(($i + 1)):1}
@@ -364,8 +364,8 @@ gsu_getopts()
        done
        result+="
        OPTIND=1
-       while getopts $1 opt \"\$@\"; do
-               case \"\$opt\" in
+       while getopts $1 _gsu_getopts_opt \"\$@\"; do
+               case \"\$_gsu_getopts_opt\" in
 "
        for ((i=0; i < ${#1}; i++)); do
                c1=${1:$i:1}