[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

user/973: httpd's configure assumes some files are executable




>Number:         973
>Category:       user
>Synopsis:       httpd's configure assumes some files are executable
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Nov 14 18:00:02 MST 1999
>Last-Modified:
>Originator:     David Leonard
>Organization:
net
>Release:        2.6
>Environment:
	
	System      : OpenBSD 2.6
	Architecture: OpenBSD.i386
	Machine     : i386
>Description:

make prereq in usr.sbin/httpd runs configure which assumes lots of
files are executable, but cvs-checked-out trees don't carry permisions

i know this is a painful assumption made in many configure files...

>How-To-Repeat:

get a freshly checked out tree
$ cd /usr/src && make build SUDO=sudo
...
preparing in /u1/openbsd/src/include/../usr.sbin/httpd
/usr/bin/lndir -s -e obj -e obj.i386 -e Makefile.bsd-wrapper /u1/openbsd/src/usr.sbin/httpd
cd /u1/openbsd/src/usr.sbin/httpd/obj && sh configure --with-layout=OpenBSD --enable-module=ssl  --enable-suexec --enable-module=ssl  --suexec-caller=www --suexec-docroot=/var/www/htdocs  --suexec-logfile=/var/log/suexec_log --suexec-userdir=public_html --suexec-uidmin=1000 --suexec-gidmin=1000  --suexec-safepath=/usr/bin:/bin:/usr/local/bin --enable-module=so --enable-shared=auth_anon  --enable-shared=auth_db --enable-shared=auth_dbm  --enable-shared=auth_digest --enable-shared=cern_meta  --enable-shared=define --enable-shared=digest --enable-shared=info  --enable-shared=log_agent --enable-shared=log_referer  --enable-shared=mime_magic --enable-shared=mmap_static  --enable-shared=proxy --enable-shared=rewrite --enable-shared=speling  --enable-shared=unique_id --enable-shared=usertrack  --enable-shared=vhost_alias --enable-module=auth_anon  --enable-module=auth_db --enable-module=auth_dbm  --enable-module=auth_digest --enable-module=cern_meta  --enable-module=define --enable-m!
!
!
!
odule=digest --enable-module=info  --enable-module=log_agent --enable-module=log_referer  --enable-module=mime_magic --enable-module=mmap_static  --enable-module=proxy --enable-module=rewrite --enable-module=speling  --enable-module=unique_id --enable-module=usertrack   --enable-module=vhost_alias
configure[117]: src/helpers/GuessOS: cannot execute - Permission denied
Configuring for Apache, Version 1.3.9
configure[144]: src/helpers/PrintPath: cannot execute - Permission denied
configure[177]: src/helpers/PrintPath: cannot execute - Permission denied
configure[188]: src/helpers/PrintPath: cannot execute - Permission denied
 + using installation path layout: OpenBSD (config.layout)
configure[1016]: src/helpers/getuid.sh: cannot execute - Permission denied
 + Warning: You have enabled the suEXEC feature. Be aware that you need
 + root privileges to complete the final installation step.
 + Warning: no Perl interpreter detected for support scripts.
 + Perhaps you need to specify one with --with-perl=FILE.
configure[1127]: src/helpers/getuid.sh: cannot execute - Permission denied
configure[1127]: src/helpers/buildinfo.sh: cannot execute - Permission denied
configure[1127]: src/helpers/buildinfo.sh: cannot execute - Permission denied
Creating Makefile
Creating Configuration.apaci in src
configure[1500]: ./Configure: cannot execute - Permission denied

>Fix:

well, either 
	* cvs could preserve permissions
	* the Makefile's prereq could chmod +x the files (bad for a ro fs)
	* the configure script shouldn't make the executable assumption

Index: configure
===================================================================
RCS file: /occult/openbsd/cvs/src/usr.sbin/httpd/configure,v
retrieving revision 1.4
diff -u -r1.4 configure
--- configure	1999/09/29 06:42:44	1.4
+++ configure	1999/11/14 23:56:11
@@ -114,7 +114,7 @@
 ##
 ##  determine platform id
 ##
-PLATFORM="`$aux/GuessOS`"
+PLATFORM="`sh $aux/GuessOS`"
 
 ##
 ##  display version information
@@ -141,7 +141,7 @@
 ##  determine path to (optional) Perl interpreter
 ##
 PERL=no-perl-on-this-system
-perlpath="`$aux/PrintPath perl5 perl miniperl`"
+perlpath="`sh $aux/PrintPath perl5 perl miniperl`"
 if [ "x$perlpath" != "x" ]; then
     PERL="$perlpath"
 fi
@@ -174,7 +174,7 @@
 ##  problems for our scripts under some platforms.
 ##
 AWK=awk
-awkpath="`$aux/PrintPath nawk gawk awk`"
+awkpath="`sh $aux/PrintPath nawk gawk awk`"
 if [ "x$awkpath" != "x" ]; then
     AWK="$awkpath"
 fi
@@ -185,7 +185,7 @@
 ## the actual data) option.
 ##
 TAR=tar
-tarpath="`$aux/PrintPath gtar gnutar tar`"
+tarpath="`sh $aux/PrintPath gtar gnutar tar`"
 if [ "x$tarpath" != "x" ]; then
     TAR="$tarpath"
 fi
@@ -205,7 +205,7 @@
 ##
 SHELL=/bin/sh
 if [ ! -f "$SHELL" ]; then
-    SHELL="`$aux/PrintPath sh`"
+    SHELL="`sh $aux/PrintPath sh`"
     if [ "x$SHELL" = "x" ]; then
         echo "configure:Error: Cannot determine path to Bourne-Shell" 1>&2
         exit 1
@@ -985,7 +985,7 @@
             -e 's:$:" \\:' >>$configstatus
     fi
 done
-echo $SEO "./configure \\" >>$configstatus
+echo $SEO "${SHELL} ./configure \\" >>$configstatus
 for arg
 do
     echo "$arg" |\
@@ -1009,7 +1009,7 @@
         echo "                 and htdocs/manual/suexec.html documents first."
         exit 1
     fi
-    if [ "x`$aux/getuid.sh`" != "x0" ]; then
+    if [ "x`${SHELL} $aux/getuid.sh`" != "x0" ]; then
         echo " + Warning: You have enabled the suEXEC feature. Be aware that you need" 1>&2
         echo " + root privileges to complete the final installation step." 1>&2
     fi
@@ -1118,12 +1118,12 @@
             fi
         done
     fi
-    if [ "x`$aux/getuid.sh`" != "x0" ]; then
+    if [ "x`${SHELL} $aux/getuid.sh`" != "x0" ]; then
         conf_port="8080"
         conf_port_ssl="8443"
     fi
-    conf_serveradmin="`$aux/buildinfo.sh -n %u@%h%d`"
-    conf_servername="`$aux/buildinfo.sh -n %h%d`"
+    conf_serveradmin="`${SHELL} $aux/buildinfo.sh -n %u@%h%d`"
+    conf_servername="`${SHELL} $aux/buildinfo.sh -n %h%d`"
 fi
  
 ##
@@ -1491,9 +1491,9 @@
 ##  $src/Configure script with our custom Configuration.apaci file
 ##
 if [ "x$quiet" = "xyes" ]; then
-    (cd $src; ./Configure -file Configuration.apaci >/dev/null);
+    (cd $src; ${SHELL} ./Configure -file Configuration.apaci >/dev/null);
 else
-    (cd $src; ./Configure -file Configuration.apaci |\
+    (cd $src; ${SHELL} ./Configure -file Configuration.apaci |\
      sed -e '/^Using config file:.*/d' \
          -e "s:Makefile in :Makefile in $src\\/:" \
          -e "s:Makefile\$:Makefile in $src:")

>Audit-Trail:
>Unformatted: