Re: bug: shell variable quoting in config.guess

2021-01-25 Thread Dmitry V. Levin
On Tue, Jan 19, 2021 at 08:49:34AM -0500, mlevins--- via Patches for the 
config.guess and config.sub scripts wrote:
> After commit 827c77253b396c07306927b2a4b794a3251c48eb in the GNU config
> repository, word splitting is no longer performed on the $sysctl shell
> variable in config.guess:
> 
>   sysctl="sysctl -n hw.machine_arch"
>   UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
>   "/sbin/$sysctl" 2>/dev/null || \
>   "/usr/sbin/$sysctl" 2>/dev/null || \
>   echo unknown))
> 
> This would attempt to run an executable named "sysctl -n hw.machine_arch"
> (instead of an executable named "sysctl").
> 
> It could be fixed by removing the quotes again, or by spelling out the full
> command twice instead of using a shell variable at all. Two alternative
> patches are attached.

Applied one of them, thanks!


-- 
ldv



bug: shell variable quoting in config.guess

2021-01-19 Thread Patches for the config.guess and config.sub scripts
After commit 827c77253b396c07306927b2a4b794a3251c48eb in the GNU config
repository, word splitting is no longer performed on the $sysctl shell
variable in config.guess:

sysctl="sysctl -n hw.machine_arch"
UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
"/sbin/$sysctl" 2>/dev/null || \
"/usr/sbin/$sysctl" 2>/dev/null || \
echo unknown))

This would attempt to run an executable named "sysctl -n hw.machine_arch"
(instead of an executable named "sysctl").

It could be fixed by removing the quotes again, or by spelling out the full
command twice instead of using a shell variable at all. Two alternative
patches are attached.
diff --git a/config.guess b/config.guess
index f772702..aca04e8 100755
--- a/config.guess
+++ b/config.guess
@@ -190,8 +190,8 @@ case 
"$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# portion of the name.  We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
-   "/sbin/$sysctl" 2>/dev/null || \
-   "/usr/sbin/$sysctl" 2>/dev/null || \
+   /sbin/$sysctl 2>/dev/null || \
+   /usr/sbin/$sysctl 2>/dev/null || \
echo unknown))
case "$UNAME_MACHINE_ARCH" in
aarch64eb) machine=aarch64_be-unknown ;;
diff --git a/config.guess b/config.guess
index f772702..552d639 100755
--- a/config.guess
+++ b/config.guess
@@ -188,10 +188,9 @@ case 
"$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
#
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name.  We always set it to "unknown".
-   sysctl="sysctl -n hw.machine_arch"
UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
-   "/sbin/$sysctl" 2>/dev/null || \
-   "/usr/sbin/$sysctl" 2>/dev/null || \
+   /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+   /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
echo unknown))
case "$UNAME_MACHINE_ARCH" in
aarch64eb) machine=aarch64_be-unknown ;;