From bc6676ed118b7f9e07e3647b9ddd44ed37304e1c Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Tue, 4 Nov 2008 08:20:00 -0700 Subject: [PATCH] Reject arguments with leading =. * lib/autoconf/general.m4 (_AC_INIT_PARSE_ARGS): Detect case of missing variable name, with fewer forks. Quote invalid arguments in message, in case they include spaces. * lib/autoconf/status.m4 (_AC_OUTPUT_CONFIG_STATUS) (_AC_OUTPUT_MAIN_LOOP): Quote invalid arguments. * lib/autotest/general.m4 (AT_INIT): Likewise. Reported by Jeff Squyres. Signed-off-by: Eric Blake --- ChangeLog | 11 +++++++++++ lib/autoconf/general.m4 | 8 +++++--- lib/autoconf/status.m4 | 10 +++++----- lib/autotest/general.m4 | 4 ++-- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 269eee59..f54b4531 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2008-11-04 Eric Blake + + Reject arguments with leading =. + * lib/autoconf/general.m4 (_AC_INIT_PARSE_ARGS): Detect case of + missing variable name, with fewer forks. Quote invalid arguments + in message, in case they include spaces. + * lib/autoconf/status.m4 (_AC_OUTPUT_CONFIG_STATUS) + (_AC_OUTPUT_MAIN_LOOP): Quote invalid arguments. + * lib/autotest/general.m4 (AT_INIT): Likewise. + Reported by Jeff Squyres. + 2008-11-04 Eric Blake Upgrade to FDL 1.3. diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4 index 834c4b99..de4de339 100644 --- a/lib/autoconf/general.m4 +++ b/lib/autoconf/general.m4 @@ -883,15 +883,17 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) AC_MSG_ERROR([unrecognized option: $ac_option + -*) AC_MSG_ERROR([unrecognized option: `$ac_option' Try `$[0] --help' for more information.]) ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([[^=]]*\)='` # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : "[.*[^_$as_cr_alnum]]" >/dev/null && - AC_MSG_ERROR([invalid variable name: $ac_envvar]) + case $ac_envvar in #( + '' | [[0-9]]* | *[[!_$as_cr_alnum]]* ) + AC_MSG_ERROR([invalid variable name: `$ac_envvar']) ;; + esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; diff --git a/lib/autoconf/status.m4 b/lib/autoconf/status.m4 index 9ee4b2ac..2f6276a7 100644 --- a/lib/autoconf/status.m4 +++ b/lib/autoconf/status.m4 @@ -1494,7 +1494,7 @@ m4_ifdef([_AC_SEEN_CONFIG(HEADERS)], [dnl ac_need_defaults=false;; --he | --h) # Conflict between --help and --header - AC_MSG_ERROR([ambiguous option: $[1] + AC_MSG_ERROR([ambiguous option: `$[1]' Try `$[0] --help' for more information.]);; ], [ --he | --h |])dnl --help | --hel | -h ) @@ -1504,7 +1504,7 @@ Try `$[0] --help' for more information.]);; ac_cs_silent=: ;; # This is an error. - -*) AC_MSG_ERROR([unrecognized option: $[1] + -*) AC_MSG_ERROR([unrecognized option: `$[1]' Try `$[0] --help' for more information.]) ;; *) AS_VAR_APPEND([ac_config_targets], [" $[1]"]) @@ -1562,7 +1562,7 @@ for ac_config_target in $ac_config_targets do case $ac_config_target in m4_ifdef([_AC_LIST_TAGS], [_AC_LIST_TAGS]) - *) AC_MSG_ERROR([invalid argument: $ac_config_target]);; + *) AC_MSG_ERROR([invalid argument: `$ac_config_target']);; esac done @@ -1635,7 +1635,7 @@ do esac case $ac_mode$ac_tag in :[[FHL]]*:*);; - :L* | :C*:*) AC_MSG_ERROR([invalid tag $ac_tag]);; + :L* | :C*:*) AC_MSG_ERROR([invalid tag `$ac_tag']);; :[[FH]]-) ac_tag=-:-;; :[[FH]]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -1663,7 +1663,7 @@ do [[\\/$]]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - AC_MSG_ERROR([cannot find input file: $ac_f]);; + AC_MSG_ERROR([cannot find input file: `$ac_f']);; esac case $ac_f in *\'*) ac_f=`AS_ECHO(["$ac_f"]) | sed "s/'/'\\\\\\\\''/g"`;; esac AS_VAR_APPEND([ac_file_inputs], [" '$ac_f'"]) diff --git a/lib/autotest/general.m4 b/lib/autotest/general.m4 index 68f75d87..d9e70892 100644 --- a/lib/autotest/general.m4 +++ b/lib/autotest/general.m4 @@ -596,7 +596,7 @@ m4_divert_push([PARSE_ARGS_END])dnl # Reject names that are not valid shell variable names. case $at_envvar in '' | [[0-9]]* | *[[!_$as_cr_alnum]]* ) - AS_ERROR([invalid variable name: $at_envvar]) ;; + AS_ERROR([invalid variable name: `$at_envvar']) ;; esac at_value=`AS_ECHO(["$at_optarg"]) | sed "s/'/'\\\\\\\\''/g"` # Export now, but save eval for later and for debug scripts. @@ -947,7 +947,7 @@ m4_divert_push([TESTS])dnl # Create the master directory if it doesn't already exist. test -d "$at_suite_dir" || mkdir "$at_suite_dir" || - AS_ERROR([cannot create '$at_suite_dir']) + AS_ERROR([cannot create `$at_suite_dir']) # Can we diff with `/dev/null'? DU 5.0 refuses. if diff /dev/null /dev/null >/dev/null 2>&1; then