Richard W.M. Jones wrote:
On Thu, Jul 30, 2009 at 10:50:49AM +0200, Jim Meyering wrote:
> diff --git a/configure.ac b/configure.ac
> index 6bdf7d4..20edc70 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -248,7 +248,7 @@ if test "x$enable_supermin" = "xyes"; then
> AC_MSG_CHECKING([for --files support in $FEBOOTSTRAP_TO_INITRAMFS])
> out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:`
> echo "febootstrap_to_initramfs test command output: $out"
>&AS_MESSAGE_LOG_FD
> - if ! echo $out | grep -sq -- "--files" ; then
> + if ! echo "$out" | grep -sq -e --files ; then
> AC_MSG_RESULT([no])
> AC_MSG_FAILURE(
> [febootstrap-to-initramfs does not support the --files option.
> --
Hmm... I searched for ' \$' in configure.ac and found more.
Most are probably theoretical-only, but once-burned...
From cf4d01e412b22a752c3fe954e5c2dced71080b46 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering(a)redhat.com>
Date: Thu, 30 Jul 2009 11:15:44 +0200
Subject: [PATCH] configure.ac: more quoting
Also, prohibit an invalid value of $JAVA_HOME,
since it must be used unquoted below.
---
configure.ac | 29 ++++++++++++++++++-----------
1 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/configure.ac b/configure.ac
index 16e16c8..ece7da7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -98,7 +98,7 @@ if test "x$vmchannel_test" != "xno"; then
AC_MSG_CHECKING([for "-net channel" support in $QEMU])
vmchannelout=`$QEMU -net channel /dev/zero 2>&1 ||:`
echo "vmchannel test command output: $vmchannelout"
>&AS_MESSAGE_LOG_FD
- if echo $vmchannelout | grep -sq "vmchannel wrong port number" ; then
+ if echo "$vmchannelout" | grep -sq "vmchannel wrong port number" ;
then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
@@ -169,8 +169,8 @@ if test "x$FEBOOTSTRAP" != "xno"; then
AC_MSG_WARN([fakechroot --version command failed, proceeding anyway])
else
AC_MSG_RESULT([$fakechroot_version])
- fakechroot_major=`echo $fakechroot_version | awk -F. '{print $1}'`
- fakechroot_minor=`echo $fakechroot_version | awk -F. '{print $2}'`
+ fakechroot_major=`echo "$fakechroot_version" | awk -F. '{print
$1}'`
+ fakechroot_minor=`echo "$fakechroot_version" | awk -F. '{print
$2}'`
if test "$fakechroot_major" -lt 2 -o \
\( "$fakechroot_major" -eq 2 -a "$fakechroot_minor" -lt 9
\); then
AC_MSG_ERROR([fakechroot version must be >= 2.9])
@@ -187,7 +187,7 @@ else
test "x$DEBIRF" = "xno" &&
AC_MSG_ERROR([debirf must be installed])
DIST="DEBIAN"
- case $host_cpu in
+ case "$host_cpu" in
*86)
DEBIAN_KERNEL_ARCH=486
;;
@@ -395,6 +395,13 @@ AC_ARG_WITH(java_home,
if test "x$with_java_home" != "xno"; then
if test "x$with_java_home" != "xyes" -a
"x$with_java_home" != "xcheck"
then
+ # Reject unsafe characters in $JAVA_HOME
+ jh_lf='
+'
+ case $JAVA_HOME in
+ *[\\\"\#\$\&\'\`$jh_lf\ \ ]*)
+ AC_MSG_FAILURE([unsafe \$JAVA_HOME directory (use --with-java-home=no to
disable Java support)]);;
+ esac
if test -d "$with_java_home"; then
JAVA_HOME="$with_java_home"
else
@@ -419,7 +426,7 @@ if test "x$with_java_home" != "xno"; then
AC_MSG_CHECKING(for JDK in $JAVA_HOME)
if test ! -x "$JAVA_HOME/bin/java"; then
AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary (use --with-java-home=no to
disable Java support)])
- else
+ else
JAVA="$JAVA_HOME/bin/java"
fi
if test ! -x "$JAVA_HOME/bin/javac"; then
@@ -452,7 +459,7 @@ if test "x$with_java_home" != "xno"; then
else
if test "`find $JAVA_HOME -name jni.h`" != ""; then
head=`find $JAVA_HOME -name jni.h | tail -1`
- dir=`dirname $head`
+ dir=`dirname "$head"`
JNI_CFLAGS="-I$dir"
else
AC_MSG_FAILURE([missing jni.h header file])
@@ -473,7 +480,7 @@ if test "x$with_java_home" != "xno"; then
else
if test "`find $JAVA_HOME -name jni_md.h`" != ""; then
head=`find $JAVA_HOME -name jni_md.h | tail -1`
- dir=`dirname $head`
+ dir=`dirname "$head"`
JNI_CFLAGS="$JNI_CFLAGS -I$dir"
else
AC_MSG_FAILURE([missing jni_md.h header file])
@@ -497,10 +504,10 @@ if test "x$with_java_home" != "xno"; then
JNI_INSTALL_DIR=\${libdir}
dnl JNI version.
- jni_major_version=`echo $VERSION | awk -F. '{print $1}'`
- jni_minor_version=`echo $VERSION | awk -F. '{print $2}'`
- jni_micro_version=`echo $VERSION | awk -F. '{print $3}'`
- JNI_VERSION_INFO=`expr $jni_major_version +
$jni_minor_version`:$jni_micro_version:$jni_minor_version
+ jni_major_version=`echo "$VERSION" | awk -F. '{print $1}'`
+ jni_minor_version=`echo "$VERSION" | awk -F. '{print $2}'`
+ jni_micro_version=`echo "$VERSION" | awk -F. '{print $3}'`
+ JNI_VERSION_INFO=`expr "$jni_major_version" +
"$jni_minor_version"`":$jni_micro_version:$jni_minor_version"
fi
fi
--
1.6.3.3