rse 98/04/22 07:00:23
Modified: . STATUS configure src CHANGES Log: Make sure all `for' loops in APACI's `configure' are running as expected by explicitly initializing IFS for every loop and restoring it after the loop. Submitted by: Ralf S. Engelschall Reviewed by: Rasmus Lerdorf, Ralf S. Engelschall Revision Changes Path 1.326 +1 -0 apache-1.3/STATUS Index: STATUS =================================================================== RCS file: /export/home/cvs/apache-1.3/STATUS,v retrieving revision 1.325 retrieving revision 1.326 diff -u -r1.325 -r1.326 --- STATUS 1998/04/22 10:33:03 1.325 +++ STATUS 1998/04/22 14:00:20 1.326 @@ -63,6 +63,7 @@ * Ralf's fix for the install-config target to get correct ScoreBoardFile * Dynamic Shared Object (DSO) support for OpenBSD 2.x * Ralf's enhanced "make install" carefulness for mime.types+magic files + * Ralf's paranoia-fixes for the IFS-handling in `configure' Available Patches: 1.16 +38 -19 apache-1.3/configure Index: configure =================================================================== RCS file: /export/home/cvs/apache-1.3/configure,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- configure 1998/04/21 16:00:33 1.15 +++ configure 1998/04/22 14:00:21 1.16 @@ -61,6 +61,10 @@ ## Written by Ralf S. Engelschall <[EMAIL PROTECTED]> ## +# default input separator chars: <space><tab><cr> +DIFS=' +' + ## ## the paths to the Apache source tree ## @@ -111,8 +115,9 @@ ## PERL=no-perl-on-this-system -IFS=: +OIFS="$IFS" IFS=':' for dir in $PATH; do + OIFS="$IFS" IFS="$DIFS" for exe in perl5 perl miniperl; do if test -f "$dir/$exe"; then if test -x "$dir/$exe"; then @@ -120,7 +125,9 @@ fi fi done + IFS="$OIFS" done +IFS="$OIFS" PERL="`echo $PERL | sed -e 's://:/:'`" ## @@ -162,7 +169,7 @@ # determine rules rules="" rulelist="" -IFS=' +OIFS="$IFS" IFS=' ' for rule in `grep '^Rule' $src/Configuration.tmpl`; do rule=`echo "$rule" | sed -e 's/^Rule[ ]*//'` @@ -173,12 +180,13 @@ rules="$rules:$namelow" rulelist="$rulelist:$name=$arg" done +IFS="$OIFS" # determine modules rm -f $src/Configuration.apaci 2>/dev/null modules="" modulelist="" -IFS=' +OIFS="$IFS" IFS=' ' for module in `egrep '^[# ]*(Add|Shared)Module' $src/Configuration.tmpl`; do add=yes @@ -202,12 +210,12 @@ modulelist="${modulelist}*" fi done +IFS="$OIFS" # backward compatibility from old src/Configuration.tmpl # parameter names to the canonical Autoconf-style shell # variable names. -IFS=' -' +OIFS="$IFS" IFS="$DIFS" for var in CFLAGS LDFLAGS LIBS INCLUDES; do eval "val=\$EXTRA_$var" if [ ".$val" != . ]; then @@ -216,14 +224,14 @@ echo " + Hint: please use $var instead of EXTRA_$var next time" fi done +IFS="$OIFS" ## ## parse argument line options ## apc_prev="" -IFS=' -' +OIFS="$IFS" IFS="$DIFS" for apc_option do # if previous option needs an argument, assign it. @@ -457,16 +465,18 @@ module ) case $apc_optarg in all ) - IFS=: + OIFS="$IFS" IFS=':' for module in `echo "$modules" | sed -e 's/^://'`; do eval "module_${module}=yes" done + IFS="$OIFS" ;; most ) - IFS=: + OIFS="$IFS" IFS=':' for module in `echo "$modules" | sed -e 's/^://'`; do eval "module_${module}=yes" done + IFS="$OIFS" module_auth_db=no # not all platforms have -ldb module_mmap_static=no # not all platforms have mmap() module_so=no # not all platforms have dlopen() @@ -487,14 +497,15 @@ shared ) case $apc_optarg in max ) - IFS=: + OIFS="$IFS" IFS=':' for module in `echo "$modules" | sed -e 's/^://'`; do eval "shared_${module}=yes" done + IFS="$OIFS" shared_so=no # because of bootstrapping ;; remain ) - IFS=: + OIFS="$IFS" IFS=':' for module in `echo "$modules" | sed -e 's/^://'`; do eval "add=\$module_${module}" if [ ".$add" = .no ]; then @@ -502,6 +513,7 @@ eval "shared_${module}=yes" fi done + IFS="$OIFS" shared_so=no ;; * ) @@ -544,10 +556,11 @@ module ) case $apc_optarg in all ) - IFS=: + OIFS="$IFS" IFS=':' for module in `echo "$modules" | sed -e 's/^://'`; do eval "module_${module}=no" done + IFS="$OIFS" ;; * ) eval "exists=\$module_${apc_optarg}" @@ -562,10 +575,11 @@ shared ) case $apc_optarg in all ) - IFS=: + OIFS="$IFS" IFS=':' for module in `echo "$modules" | sed -e 's/^://'`; do eval "shared_${module}=no" done + IFS="$OIFS" ;; * ) eval "exists=\$module_${apc_optarg}" @@ -597,6 +611,7 @@ ;; esac done +IFS="$OIFS" if [ ".$apc_prev" != . ]; then echo "configure:Error: missing argument to --`echo $apc_prev | sed 's/_/-/g'`" 1>&2 exit 1 @@ -616,7 +631,7 @@ ## expand path variables and make sure ## they do not end with a backslash ## -IFS=' ' +OIFS="$IFS" IFS="$DIFS" for var in prefix exec_prefix bindir sbindir \ libexecdir mandir sysconfdir datadir \ localstatedir includedir; do @@ -637,6 +652,7 @@ ;; esac done +IFS="$OIFS" ## ## determine special configurable Makefile targets @@ -766,8 +782,7 @@ touch sedsubst # generate settings from imported environment variables -IFS=' -' +OIFS="$IFS" IFS="$DIFS" for var in CC OPTIM CFLAGS CFLAGS_SHLIB LDFLAGS LDFLAGS_SHLIB \ LDFLAGS_SHLIB_EXPORT LIBS INCLUDES RANLIB; do eval "val=\$$var"; @@ -783,9 +798,10 @@ eval "$var=\"\"; export $var" fi done +IFS="$OIFS" # generate rule directives -IFS=: +OIFS="$IFS" IFS=':' for rule in `echo "$rules" | sed -e 's/^://'`; do name="`echo $rule | tr "a-z" "A-Z"`" eval "val=\$rule_$rule" @@ -794,16 +810,18 @@ echo " + Rule $name=$val" fi done +IFS="$OIFS" # consistency checks for shared object support some_shares=0 -IFS=: +OIFS="$IFS" IFS=':' for module in `echo "$modules" | sed -e 's/^://'`; do eval "share=\$shared_$module" if [ $share = yes ]; then some_shares=1 fi done +IFS="$OIFS" if [ $some_shares = 1 ]; then if [ $module_so = no ]; then module_so=yes @@ -819,7 +837,7 @@ fi # generate module directives -IFS=: +OIFS="$IFS" IFS=':' for module in `echo "$modules" | sed -e 's/^://'`; do eval "add=\$module_$module" if [ $add = yes ]; then @@ -840,6 +858,7 @@ echo " + Module $module: $m" fi done +IFS="$OIFS" # and finally translate the config template according to our situation if [ -f $src/Configuration.apaci ]; then 1.791 +4 -0 apache-1.3/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.790 retrieving revision 1.791 diff -u -r1.790 -r1.791 --- CHANGES 1998/04/22 10:33:05 1.790 +++ CHANGES 1998/04/22 14:00:22 1.791 @@ -1,5 +1,9 @@ Changes with Apache 1.3b7 + *) Make sure the input field separator (IFS) shell variable is explicitly + initialized correctly before _every_ `for' loop and also restored after + the loops. [Ralf S. Engelschall] + *) Make sure that "make install" doesn't overwrite the `mime.types' and `magic' files from an existing Apache installation. Because people often customize these for own MIME and content types.