manoj 99/08/17 14:00:09
Modified: mpm INSTALL Makefile.tmpl configure mpm/src ApacheCore.def Configuration.tmpl Configure mpm/src/ap Makefile.tmpl ap.dsp ap.mak ap_checkpass.c ap_md5c.c ap_sha1.c ap_snprintf.c mpm/src/helpers GuessOS binbuild.sh find-dbm-lib mpm/src/include ap.h ap_config.h ap_md5.h ap_mmn.h ap_sha1.h httpd.h mpm/src/main http_config.c http_core.c http_main.c http_protocol.c util.c util_script.c mpm/src/modules/experimental Makefile.tmpl mpm/src/modules/proxy proxy_ftp.c mpm/src/modules/standard mod_access.c mod_unique_id.c mpm/src/os/unix os.c unixd.c mpm/src/os/win32 registry.c mpm/src/os/win32/installer/installdll install.c mpm/src/support Makefile.tmpl ab.c htpasswd.c httpd.8 httpd.exp mpm/src/test check_chunked Added: mpm/src/ap ap_base64.c mpm/src/modules/experimental mod_auth_digest.c Log: merge the differences in apache-1.3 from tag mpm-merge-1 up to APACHE_1_3_9 (a.k.a. mpm-merge-2) onto the mpm tree prior to the merge, the mpm tree was tagged with apache-1_3-merge-2-pre, and after the merge, the mpm tree will be tagged with apache-1_3-merge-2-post Revision Changes Path 1.3 +1 -1 apache-2.0/mpm/INSTALL Index: INSTALL =================================================================== RCS file: /home/cvs/apache-2.0/mpm/INSTALL,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- INSTALL 1999/08/06 00:53:52 1.2 +++ INSTALL 1999/08/17 20:56:55 1.3 @@ -82,7 +82,7 @@ - Linux - SunOS - UnixWare - Mac OS X Server - FreeBSD - Solaris - AIX - Mac OS - OpenBSD - IRIX - SCO - OpenStep/Mach - - NetBSD - HPUX - ReliantUNIX + - NetBSD - HPUX - ReliantUNIX - DYNIX/ptx - BSDI - Digital Unix - DGUX o Entirely unsupported platforms are: 1.3 +1 -1 apache-2.0/mpm/Makefile.tmpl Index: Makefile.tmpl =================================================================== RCS file: /home/cvs/apache-2.0/mpm/Makefile.tmpl,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- Makefile.tmpl 1999/08/06 00:53:52 1.2 +++ Makefile.tmpl 1999/08/17 20:56:56 1.3 @@ -434,7 +434,7 @@ $(CP) $(TOP)/$(SRC)/$${osdir}/os.h $(root)$(includedir)/; \ echo "$(CP) $(TOP)/$(SRC)/$${osdir}/os-inline.c $(root)$(includedir)/"; \ $(CP) $(TOP)/$(SRC)/$${osdir}/os-inline.c $(root)$(includedir)/ - chmod 644 $(root)$(includedir)/*.h + chmod 644 $(root)$(includedir)/*.h $(root)$(includedir)/xml/*.h @echo "<=== [include]" # create an initial document root containing the Apache manual, 1.7 +24 -3 apache-2.0/mpm/configure Index: configure =================================================================== RCS file: /home/cvs/apache-2.0/mpm/configure,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -u -r1.6 -r1.7 --- configure 1999/08/12 11:24:49 1.6 +++ configure 1999/08/17 20:56:59 1.7 @@ -318,9 +318,19 @@ ## Platform-specific defaults ## case $PLATFORM in - *-apple-rhapsody*) default_layout="Mac OS X Server";; - *-apple-macos*) default_layout="Mac OS X Server";; - *) default_layout="Apache";; + *-apple-rhapsody*) + default_layout="Mac OS X Server" + iflags_core="${iflags_core} -S \"-S\"" + iflags_dso="${iflags_dso} -S \"-S\"" + ;; + *-apple-macos*) + default_layout="Mac OS X Server" + iflags_core="${iflags_core} -S \"-S\"" + iflags_dso="${iflags_dso} -S \"-S\"" + ;; + *) + default_layout="Apache" + ;; esac ## @@ -771,6 +781,7 @@ eval "module_${module}=yes" done IFS="$OOIFS" + module_auth_digest=no # conflict with mod_digest ;; most ) OOIFS="$IFS" @@ -783,6 +794,7 @@ module_mmap_static=no # not all platforms have mmap() module_so=no # not all platforms have dlopen() module_example=no # only for developers + module_auth_digest=no # conflict with mod_digest module_log_agent=no # deprecated module_log_referer=no # deprecated ;; @@ -1463,6 +1475,15 @@ fi done IFS="$OIFS" + +# translate module names to dll names for OS/2 so that they are no more +# than 8 characters long and have an extension of "dll" instead of "so" +case $PLATFORM in + *OS/2* ) + echo $SEO "s%/mod_\\(.\\{1,8\\}\\).*\\.so%/\\1\\.dll%" >>$sedsubst + echo $SEO "s%/\\(lib.*\\)\\.so$%/\\1.dll%" >>$sedsubst + ;; +esac # split sedsubst into chunks of 50 commands # to workaround limits in braindead seds 1.2 +16 -0 apache-2.0/mpm/src/ApacheCore.def Index: ApacheCore.def =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/ApacheCore.def,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- ApacheCore.def 1999/06/18 18:39:22 1.1 +++ ApacheCore.def 1999/08/17 20:57:12 1.2 @@ -343,4 +343,20 @@ ap_standalone @337 ap_server_confname @338 ap_sub_req_method_uri @339 + ap_regerror @341 + ap_regexec @342 + ap_field_noparam @343 + ap_pbase64decode @344 + ap_pbase64encode @345 + ap_base64encode @346 + ap_base64encode_binary @347 + ap_base64encode_len @348 + ap_base64decode @349 + ap_base64decode_binary @350 + ap_base64decode_len @351 + ap_SHA1Init @352 + ap_SHA1Update_binary @353 + ap_SHA1Update @354 + ap_SHA1Final @355 + ap_sha1_base64 @356 1.7 +40 -9 apache-2.0/mpm/src/Configuration.tmpl Index: Configuration.tmpl =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/Configuration.tmpl,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -u -r1.6 -r1.7 --- Configuration.tmpl 1999/08/06 00:54:00 1.6 +++ Configuration.tmpl 1999/08/17 20:57:14 1.7 @@ -125,7 +125,7 @@ # functions. The format is: Rule RULE=value # # At present, only the following RULES are known: WANTHSREGEX, SOCKS4, -# SOCKS5, IRIXNIS, IRIXN32, PARANOID, EXPAT and MPM_METHOD. +# SOCKS5, IRIXNIS, IRIXN32, PARANOID, EXPAT, DEV_RANDOM, and MPM_METHOD. # # The actual value of the Rule depends on what it's used for. For # Rules like WANTHSREGEX or IRIXN32, the Rule determines if the @@ -184,6 +184,19 @@ Rule PARANOID=no Rule EXPAT=default +# DEV_RANDOM: +# Note: this rule is only used when compiling mod_auth_digest. +# mod_auth_digest requires a cryptographically strong random seed for its +# random number generator. It knows two ways of getting this: 1) from +# a file or device (such as "/dev/random"), or 2) from the truerand +# library. If this rule is set to 'default' then Configure will choose +# to use /dev/random if it exists, else /dev/urandom if it exists, +# else the truerand library. To override this behaviour set DEV_RANDOM +# either to 'truerand' (to use the library) or to a device or file +# (e.g. '/dev/urandom'). If the truerand library is selected, Configure +# will assume "-L/usr/local/lib -lrand". +Rule DEV_RANDOM=default + # The following rules should be set automatically by Configure. However, if # they are not set by Configure (because we don't know the correct value for # your platform), or are set incorrectly, you may override them here. @@ -325,13 +338,6 @@ AddModule modules/standard/mod_userdir.o -## The proxy module enables the server to act as a proxy for outside -## http and ftp services. It's not as complete as it could be yet. -## NOTE: You do not want this module UNLESS you are running a proxy; -## it is not needed for normal (origin server) operation. - -# AddModule modules/proxy/libproxy.a - ## The Alias module provides simple URL translation and redirection. AddModule modules/standard/mod_alias.o @@ -362,9 +368,34 @@ # AddModule modules/standard/mod_auth_db.o ## "digest" implements HTTP Digest Authentication rather than the less -## secure Basic Auth used by the other modules. +## secure Basic Auth used by the other modules. This is the old version. # AddModule modules/standard/mod_digest.o + +## "auth_digest" implements HTTP/1.1 Digest Authentication (RFC 2617) +## rather than the less secure Basic Auth used by the other modules. +## This is an updated version of mod_digest, but it is not as well tested +## and is therefore marked experimental. Use either the one above, or +## this one below, but not both digest modules. +## Note: if you add this module in then you might also need the +## truerand library (available for example from +## ftp://research.att.com/dist/mab/librand.shar) - see the Rule +## DEV_RANDOM above for more info. +## +## Must be added above (run later than) the proxy module because the +## WWW-Authenticate and Proxy-Authenticate headers are parsed in the +## post-read-request phase and it needs to know if this is a proxy request. + +# AddModule modules/experimental/mod_auth_digest.o + +## Optional Proxy +## +## The proxy module enables the server to act as a proxy for outside +## http and ftp services. It's not as complete as it could be yet. +## NOTE: You do not want this module UNLESS you are running a proxy; +## it is not needed for normal (origin server) operation. + +# AddModule modules/proxy/libproxy.a ## Optional response header manipulation modules. ## 1.15 +61 -7 apache-2.0/mpm/src/Configure Index: Configure =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/Configure,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -u -r1.14 -r1.15 --- Configure 1999/08/06 00:54:00 1.14 +++ Configure 1999/08/17 20:57:15 1.15 @@ -708,10 +708,41 @@ OS='Paragon OSF/1' CFLAGS="$CFLAGS -DPARAGON" ;; - *DYNIX*) + *-sequent-ptx2.*.*) DEF_WANTHSREGEX=yes - OS='SEQUENT' - CFLAGS="$CFLAGS -DSEQUENT" + OS='SEQUENT DYNIX/ptx v2.*.*' + CFLAGS="$CFLAGS -DSEQUENT=20 -Wc,-pw" + LIBS="$LIBS -lsocket -linet -lnsl -lc -lseq" + ;; + *-sequent-ptx4.0.*) + DEF_WANTHSREGEX=yes + OS='SEQUENT DYNIX/ptx v4.0.*' + CFLAGS="$CFLAGS -DSEQUENT=40 -Wc,-pw" + LIBS="$LIBS -lsocket -linet -lnsl -lc" + ;; + *-sequent-ptx4.[123].*) + DEF_WANTHSREGEX=yes + OS='SEQUENT DYNIX/ptx v4.1.*/v4.2.*' + CFLAGS="$CFLAGS -DSEQUENT=41 -Wc,-pw" + LIBS="$LIBS -lsocket -lnsl -lc" + ;; + *-sequent-ptx4.4.*) + DEF_WANTHSREGEX=yes + OS='SEQUENT DYNIX/ptx v4.4.*' + CFLAGS="$CFLAGS -DSEQUENT=44 -Wc,-pw" + LIBS="$LIBS -lsocket -lnsl -lc" + ;; + *-sequent-ptx4.5.*) + DEF_WANTHSREGEX=yes + OS='SEQUENT DYNIX/ptx v4.5.*' + CFLAGS="$CFLAGS -DSEQUENT=45 -Wc,-pw" + LIBS="$LIBS -lsocket -lnsl -lc" + ;; + *-sequent-ptx5.0.*) + DEF_WANTHSREGEX=yes + OS='SEQUENT DYNIX/ptx v5.0.*' + CFLAGS="$CFLAGS -DSEQUENT=50 -Wc,-pw" + LIBS="$LIBS -lsocket -lnsl -lc" ;; *NEWS-OS*) DEF_WANTHSREGEX=yes @@ -752,7 +783,7 @@ ;; *-tandem-oss) OS='Tandem OSS' - CFLAGS="-D_TANDEM_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -g" + CFLAGS="-D_TANDEM_SOURCE -D_XOPEN_SOURCE_EXTENDED=1" CC='c89' ;; *) # default: Catch systems we don't know about @@ -1155,6 +1186,20 @@ LDFLAGS_MOD_SHLIB=$LDFLAGS_SHLIB SHLIB_SUFFIX_DEPTH=1 ;; + *-sequent-ptx*) + case $PLAT in + *-sequent-ptx2*) + ;; + *-sequent-ptx4.0*) + ;; + *-sequent-ptx*) + CFLAGS_SHLIB="-KPIC" + LDFLAGS_SHLIB="-G" + LDFLAGS_SHLIB_EXPORT="-Wl,-Bexport" + LDFLAGS_MOD_SHLIB=$LDFLAGS_SHLIB + ;; + esac + ;; RM*-siemens-sysv4*) # MIPS hosts can take advantage of the LDFLAGS_SHLIB_EXPORT switch case $CC in @@ -1195,7 +1240,6 @@ LDFLAGS_SHLIB="-b" LDFLAGS_MOD_SHLIB=$LDFLAGS_SHLIB LDFLAGS_SHLIB_EXPORT="-Wl,-E -Wl,-B,deferred" - SHLIB_SUFFIX_NAME=sl ;; *-hp-hpux10.*|*-hp-hpux11.*) case $CC in @@ -1205,7 +1249,6 @@ LDFLAGS_SHLIB="-b" LDFLAGS_MOD_SHLIB=$LDFLAGS_SHLIB LDFLAGS_SHLIB_EXPORT="-Wl,-E -Wl,-B,deferred -Wl,+s" - SHLIB_SUFFIX_NAME=sl ;; *-ibm-aix*) case $CC in @@ -1738,7 +1781,7 @@ # select the special subtarget for shared core generation SUBTARGET=target_shared # determine additional suffixes for libhttpd.so - V=1 R=3 P=8 + V=1 R=3 P=9 if [ "x$SHLIB_SUFFIX_DEPTH" = "x0" ]; then SHLIB_SUFFIX_LIST="" fi @@ -1965,6 +2008,17 @@ case $PLAT in *-ibm-aix* ) DL_LIB="-lld" + ;; + *-sequent-ptx* ) + case $PLAT in + *-sequent-ptx2*) + ;; + *-sequent-ptx4.0*) + ;; + *-sequent-ptx*) + DL_LIB="-ldl" + ;; + esac ;; *-hp-hpux*) if ./helpers/TestCompile func shl_load; then 1.9 +3 -1 apache-2.0/mpm/src/ap/Makefile.tmpl Index: Makefile.tmpl =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/ap/Makefile.tmpl,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -u -r1.8 -r1.9 --- Makefile.tmpl 1999/08/06 00:54:07 1.8 +++ Makefile.tmpl 1999/08/17 20:57:26 1.9 @@ -6,7 +6,7 @@ LIB=libap.a OBJS=ap_cpystrn.o ap_execve.o ap_fnmatch.o ap_getpass.o ap_md5c.o ap_signal.o \ - ap_slack.o ap_snprintf.o ap_sha1.o ap_checkpass.o \ + ap_slack.o ap_snprintf.o ap_sha1.o ap_checkpass.o ap_base64.o \ ap_buf.o ap_hooks.o .c.o: @@ -68,6 +68,8 @@ $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h $(OSDIR)/os-inline.c \ $(INCDIR)/ap_ctype.h $(INCDIR)/ap_md5.h $(INCDIR)/ap.h \ $(INCDIR)/apr.h +ap_sha1.o: ap_sha1.c $(INCDIR)/ap_config.h $(INCDIR)/ap_sha1.h \ + $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h $(OSDIR)/os-inline.c ap_signal.o: ap_signal.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \ $(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \ $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h $(INCDIR)/alloc.h \ 1.2 +12 -0 apache-2.0/mpm/src/ap/ap.dsp Index: ap.dsp =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/ap/ap.dsp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- ap.dsp 1999/06/18 18:39:24 1.1 +++ ap.dsp 1999/08/17 20:57:28 1.2 @@ -106,5 +106,17 @@ SOURCE=.\ap_md5c.c # End Source File +# Begin Source File + +SOURCE=.\ap_sha1.c +# End Source File +# Begin Source File + +SOURCE=.\ap_checkpass.c +# End Source File +# Begin Source File + +SOURCE=.\ap_base64.c +# End Source File # End Target # End Project 1.2 +147 -22 apache-2.0/mpm/src/ap/ap.mak Index: ap.mak =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/ap/ap.mak,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- ap.mak 1999/06/18 18:39:24 1.1 +++ ap.mak 1999/08/17 20:57:31 1.2 @@ -50,6 +50,9 @@ [EMAIL PROTECTED] "$(INTDIR)\ap_signal.obj" [EMAIL PROTECTED] "$(INTDIR)\ap_slack.obj" [EMAIL PROTECTED] "$(INTDIR)\ap_snprintf.obj" + [EMAIL PROTECTED] "$(INTDIR)\ap_sha1.obj" + [EMAIL PROTECTED] "$(INTDIR)\ap_base64.obj" + [EMAIL PROTECTED] "$(INTDIR)\ap_checkpass.obj" [EMAIL PROTECTED] "$(INTDIR)\vc50.idb" [EMAIL PROTECTED] "$(OUTDIR)\ap.lib" @@ -95,7 +98,7 @@ BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\ap.bsc" BSC32_SBRS= \ - + LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"$(OUTDIR)\ap.lib" LIB32_OBJS= \ @@ -104,7 +107,10 @@ "$(INTDIR)\ap_md5c.obj" \ "$(INTDIR)\ap_signal.obj" \ "$(INTDIR)\ap_slack.obj" \ - "$(INTDIR)\ap_snprintf.obj" + "$(INTDIR)\ap_snprintf.obj" \ + "$(INTDIR)\ap_sha1.obj" \ + "$(INTDIR)\ap_base64.obj" \ + "$(INTDIR)\ap_checkpass.obj" "$(OUTDIR)\ap.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< @@ -136,6 +142,9 @@ [EMAIL PROTECTED] "$(INTDIR)\ap_signal.obj" [EMAIL PROTECTED] "$(INTDIR)\ap_slack.obj" [EMAIL PROTECTED] "$(INTDIR)\ap_snprintf.obj" + [EMAIL PROTECTED] "$(INTDIR)\ap_sha1.obj" + [EMAIL PROTECTED] "$(INTDIR)\ap_base64.obj" + [EMAIL PROTECTED] "$(INTDIR)\ap_checkpass.obj" [EMAIL PROTECTED] "$(INTDIR)\vc50.idb" [EMAIL PROTECTED] "$(OUTDIR)\ap.lib" @@ -181,7 +190,7 @@ BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\ap.bsc" BSC32_SBRS= \ - + LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"$(OUTDIR)\ap.lib" LIB32_OBJS= \ @@ -190,7 +199,10 @@ "$(INTDIR)\ap_md5c.obj" \ "$(INTDIR)\ap_signal.obj" \ "$(INTDIR)\ap_slack.obj" \ - "$(INTDIR)\ap_snprintf.obj" + "$(INTDIR)\ap_snprintf.obj" \ + "$(INTDIR)\ap_sha1.obj" \ + "$(INTDIR)\ap_base64.obj" \ + "$(INTDIR)\ap_checkpass.obj" "$(OUTDIR)\ap.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< @@ -219,13 +231,13 @@ "..\os\win32\readdir.h"\ {$(INCLUDE)}"sys\stat.h"\ {$(INCLUDE)}"sys\types.h"\ - + NODEP_CPP_AP_CP=\ "..\include\ap_config_auto.h"\ "..\include\ebcdic.h"\ "..\include\os.h"\ "..\include\sfio.h"\ - + "$(INTDIR)\ap_cpystrn.obj" : $(SOURCE) $(DEP_CPP_AP_CP) "$(INTDIR)" @@ -244,8 +256,8 @@ "..\include\util_uri.h"\ "..\os\win32\os.h"\ "..\os\win32\readdir.h"\ - + "$(INTDIR)\ap_cpystrn.obj" : $(SOURCE) $(DEP_CPP_AP_CP) "$(INTDIR)" @@ -264,11 +276,11 @@ "..\os\win32\os.h"\ {$(INCLUDE)}"sys\stat.h"\ {$(INCLUDE)}"sys\types.h"\ - + NODEP_CPP_AP_FN=\ "..\include\ap_config_auto.h"\ "..\include\os.h"\ - + "$(INTDIR)\ap_fnmatch.obj" : $(SOURCE) $(DEP_CPP_AP_FN) "$(INTDIR)" @@ -282,8 +294,8 @@ "..\include\fnmatch.h"\ "..\include\hsregex.h"\ "..\os\win32\os.h"\ - + "$(INTDIR)\ap_fnmatch.obj" : $(SOURCE) $(DEP_CPP_AP_FN) "$(INTDIR)" @@ -307,13 +319,13 @@ "..\os\win32\readdir.h"\ {$(INCLUDE)}"sys\stat.h"\ {$(INCLUDE)}"sys\types.h"\ - + NODEP_CPP_AP_SI=\ "..\include\ap_config_auto.h"\ "..\include\ebcdic.h"\ "..\include\os.h"\ "..\include\sfio.h"\ - + "$(INTDIR)\ap_signal.obj" : $(SOURCE) $(DEP_CPP_AP_SI) "$(INTDIR)" @@ -332,7 +344,7 @@ "..\include\util_uri.h"\ "..\os\win32\os.h"\ "..\os\win32\readdir.h"\ - + "$(INTDIR)\ap_signal.obj" : $(SOURCE) $(DEP_CPP_AP_SI) "$(INTDIR)" @@ -358,14 +370,14 @@ "..\os\win32\readdir.h"\ {$(INCLUDE)}"sys\stat.h"\ {$(INCLUDE)}"sys\types.h"\ - + NODEP_CPP_AP_SL=\ "..\include\ap_config_auto.h"\ "..\include\ebcdic.h"\ "..\include\os.h"\ "..\include\sfio.h"\ - + "$(INTDIR)\ap_slack.obj" : $(SOURCE) $(DEP_CPP_AP_SL) "$(INTDIR)" @@ -384,8 +396,8 @@ "..\include\util_uri.h"\ "..\os\win32\os.h"\ "..\os\win32\readdir.h"\ - + "$(INTDIR)\ap_slack.obj" : $(SOURCE) $(DEP_CPP_AP_SL) "$(INTDIR)" @@ -409,13 +421,13 @@ "..\os\win32\readdir.h"\ {$(INCLUDE)}"sys\stat.h"\ {$(INCLUDE)}"sys\types.h"\ - + NODEP_CPP_AP_SN=\ "..\include\ap_config_auto.h"\ "..\include\ebcdic.h"\ "..\include\os.h"\ "..\include\sfio.h"\ - + "$(INTDIR)\ap_snprintf.obj" : $(SOURCE) $(DEP_CPP_AP_SN) "$(INTDIR)" @@ -434,8 +446,8 @@ "..\include\util_uri.h"\ "..\os\win32\os.h"\ "..\os\win32\readdir.h"\ - + "$(INTDIR)\ap_snprintf.obj" : $(SOURCE) $(DEP_CPP_AP_SN) "$(INTDIR)" @@ -454,12 +466,12 @@ "..\os\win32\os.h"\ {$(INCLUDE)}"sys\stat.h"\ {$(INCLUDE)}"sys\types.h"\ - + NODEP_CPP_AP_MD=\ "..\include\ap_config_auto.h"\ "..\include\os.h"\ ".\ebcdic.h"\ - + "$(INTDIR)\ap_md5c.obj" : $(SOURCE) $(DEP_CPP_AP_MD) "$(INTDIR)" @@ -473,13 +485,126 @@ "..\include\ap_mmn.h"\ "..\include\hsregex.h"\ "..\os\win32\os.h"\ - + "$(INTDIR)\ap_md5c.obj" : $(SOURCE) $(DEP_CPP_AP_MD) "$(INTDIR)" !ENDIF + +SOURCE=.\ap_checkpass.c + +!IF "$(CFG)" == "ap - Win32 Release" + +DEP_CPP_AP_CH=\ + "..\include\ap_config.h"\ + "..\include\ap_ctype.h"\ + "..\include\ap_mmn.h"\ + "..\include\hsregex.h"\ + "..\os\win32\os.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ + +NODEP_CPP_AP_CH=\ + "..\include\ap_config_auto.h"\ + "..\include\os.h"\ + ".\ebcdic.h"\ + + +"$(INTDIR)\ap_checkpass.obj" : $(SOURCE) $(DEP_CPP_AP_CH) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "ap - Win32 Debug" + +DEP_CPP_AP_CH=\ + "..\include\ap_config.h"\ + "..\include\ap_ctype.h"\ + "..\include\ap_mmn.h"\ + "..\include\hsregex.h"\ + "..\os\win32\os.h"\ + + +"$(INTDIR)\ap_checkpass.obj" : $(SOURCE) $(DEP_CPP_AP_CH) "$(INTDIR)" + + +!ENDIF + +SOURCE=.\ap_sha1.c + +!IF "$(CFG)" == "ap - Win32 Release" + +DEP_CPP_AP_SH=\ + "..\include\ap_config.h"\ + "..\include\ap_ctype.h"\ + "..\include\ap_sha1.h"\ + "..\include\ap_mmn.h"\ + "..\include\hsregex.h"\ + "..\os\win32\os.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ + +NODEP_CPP_AP_SH=\ + "..\include\ap_config_auto.h"\ + "..\include\os.h"\ + ".\ebcdic.h"\ + + +"$(INTDIR)\ap_sha1.obj" : $(SOURCE) $(DEP_CPP_AP_SH) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "ap - Win32 Debug" + +DEP_CPP_AP_SH=\ + "..\include\ap_config.h"\ + "..\include\ap_ctype.h"\ + "..\include\ap_sha1.h"\ + "..\include\ap_mmn.h"\ + "..\include\hsregex.h"\ + "..\os\win32\os.h"\ + + +"$(INTDIR)\ap_sha1.obj" : $(SOURCE) $(DEP_CPP_AP_SH) "$(INTDIR)" + + +!ENDIF + +SOURCE=.\ap_base64.c + +!IF "$(CFG)" == "ap - Win32 Release" + +DEP_CPP_AP_BA=\ + "..\include\ap_config.h"\ + "..\include\ap_ctype.h"\ + "..\include\ap_mmn.h"\ + "..\include\hsregex.h"\ + "..\os\win32\os.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ + +NODEP_CPP_AP_BA=\ + "..\include\ap_config_auto.h"\ + "..\include\os.h"\ + ".\ebcdic.h"\ + + +"$(INTDIR)\ap_base64.obj" : $(SOURCE) $(DEP_CPP_AP_BA) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "ap - Win32 Debug" + +DEP_CPP_AP_BA=\ + "..\include\ap_config.h"\ + "..\include\ap_ctype.h"\ + "..\include\ap_mmn.h"\ + "..\include\hsregex.h"\ + "..\os\win32\os.h"\ + + +"$(INTDIR)\ap_base64.obj" : $(SOURCE) $(DEP_CPP_AP_BA) "$(INTDIR)" + + +!ENDIF !ENDIF 1.2 +4 -8 apache-2.0/mpm/src/ap/ap_checkpass.c Index: ap_checkpass.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/ap/ap_checkpass.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- ap_checkpass.c 1999/08/06 00:54:08 1.1 +++ ap_checkpass.c 1999/08/17 20:57:36 1.2 @@ -63,9 +63,6 @@ #include "ap_md5.h" #include "ap_sha1.h" #include "ap.h" -#ifdef CHARSET_EBCDIC -#include "ebcdic.h" -#endif /*CHARSET_EBCDIC*/ #if HAVE_CRYPT_H #include <crypt.h> #endif @@ -81,18 +78,18 @@ API_EXPORT(char *) ap_validate_password(const char *passwd, const char *hash) { char sample[120]; - char *crypt_pw; + /* FreeBSD style MD5 string */ - if (!strncmp(hash, apr1_id, strlen(apr1_id))) { + if (strncmp(hash, AP_MD5PW_ID, AP_MD5PW_IDLEN) == 0) { ap_MD5Encode((const unsigned char *)passwd, (const unsigned char *)hash, sample, sizeof(sample)); } /* Netscape / SHA1 ldap style strng */ - else if (!strncmp(hash, sha1_id, strlen(sha1_id))) { + else if (strncmp(hash, AP_SHA1PW_ID, AP_SHA1PW_IDLEN) == 0) { ap_sha1_base64(passwd, strlen(passwd), sample); } @@ -107,8 +104,7 @@ */ ap_cpystrn(sample, passwd, sizeof(sample) - 1); #else - crypt_pw = crypt(passwd, hash); - ap_cpystrn(sample, crypt_pw, sizeof(sample) - 1); + ap_cpystrn(sample, (char *)crypt(passwd, hash), sizeof(sample) - 1); #endif } return (strcmp(sample, hash) == 0) ? NULL : "password mismatch"; 1.3 +7 -12 apache-2.0/mpm/src/ap/ap_md5c.c Index: ap_md5c.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/ap/ap_md5c.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- ap_md5c.c 1999/08/06 00:54:08 1.2 +++ ap_md5c.c 1999/08/17 20:57:39 1.3 @@ -412,12 +412,6 @@ } /* - * Define the Magic String prefix that identifies a password as being - * hashed using our algorithm. - */ -const char *apr1_id = "$apr1$"; - -/* * The following MD5 password encryption code was largely borrowed from * the FreeBSD 3.0 /usr/src/lib/libcrypt/crypt.c file, which is * licenced as stated at the top of this file. @@ -463,8 +457,8 @@ /* * If it starts with the magic string, then skip that. */ - if (!strncmp((char *)sp, apr1_id, strlen(apr1_id))) { - sp += strlen(apr1_id); + if (strncmp((char *)sp, AP_MD5PW_ID, AP_MD5PW_IDLEN) == 0) { + sp += AP_MD5PW_IDLEN; } /* @@ -493,7 +487,7 @@ /* * Then our magic string */ - ap_MD5Update(&ctx, (const unsigned char *)apr1_id, strlen(apr1_id)); + ap_MD5Update(&ctx, (const unsigned char *) AP_MD5PW_ID, AP_MD5PW_IDLEN); /* * Then the raw salt @@ -533,9 +527,10 @@ * Now make the output string. We know our limitations, so we * can use the string routines without bounds checking. */ - strcpy(passwd, apr1_id); - strncat(passwd, (char *)sp, sl); - strcat(passwd, "$"); + ap_cpystrn(passwd, AP_MD5PW_ID, AP_MD5PW_IDLEN + 1); + ap_cpystrn(passwd + AP_MD5PW_IDLEN, (char *)sp, sl + 1); + passwd[AP_MD5PW_IDLEN + sl] = '$'; + passwd[AP_MD5PW_IDLEN + sl + 1] = '\0'; ap_MD5Final(final, &ctx); 1.2 +83 -120 apache-2.0/mpm/src/ap/ap_sha1.c Index: ap_sha1.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/ap/ap_sha1.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- ap_sha1.c 1999/08/06 00:54:09 1.1 +++ ap_sha1.c 1999/08/17 20:57:42 1.2 @@ -6,7 +6,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in @@ -53,7 +53,7 @@ * For more information on the Apache Group and the Apache HTTP server * project, please see <http://www.apache.org/>. * - * The only exported function: + * The exported function: * * ap_sha1_base64(const char *clear, int len, char *out); * @@ -70,32 +70,16 @@ * will always generate the same hash, making it easier * to break since the search space is smaller. * - * See also the documentation in support/SHA1 as to hints on how to + * See also the documentation in support/SHA1 as to hints on how to * migrate an existing netscape installation and other supplied utitlites. * - * This software also makes use of the following components: + * This software also makes use of the following component: * * NIST Secure Hash Algorithm * heavily modified by Uwe Hollerbach [EMAIL PROTECTED] edu * from Peter C. Gutmann's implementation as found in * Applied Cryptography by Bruce Schneier * This code is hereby placed in the public domain - * - * MIME Base 64 encoding based on src/metamail/codes.c in metamail, - * available at: ftp://thumper.bellcore.com/pub/nsb/ - * - * Metamail's copyright is: - * Copyright (c) 1991 Bell Communications Research, Inc. (Bellcore) - * Permission to use, copy, modify, and distribute this material - * for any purpose and without fee is hereby granted, provided - * that the above copyright notice and this permission notice - * appear in all copies, and that the name of Bellcore not be - * used in advertising or publicity pertaining to this - * material without the specific, prior written permission - * of an authorized representative of Bellcore. BELLCORE - * MAKES NO REPRESENTATIONS ABOUT THE ACCURACY OR SUITABILITY - * OF THIS MATERIAL FOR ANY PURPOSE. IT IS PROVIDED "AS IS", - * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. */ #include <string.h> @@ -133,30 +117,12 @@ temp = ROT32(A,5) + f##n(B,C,D) + E + W[i] + CONST##n; \ E = D; D = C; C = ROT32(B,30); B = A; A = temp -typedef unsigned char AP_BYTE; /* an 8-bit quantity */ -typedef unsigned long AP_LONG; /* a 32-bit quantity */ - #define SHA_BLOCKSIZE 64 -#define SHA_DIGESTSIZE 20 - -typedef struct { - AP_LONG digest[5]; /* message digest */ - AP_LONG count_lo, count_hi; /* 64-bit bit count */ - AP_LONG data[16]; /* SHA data buffer */ - int local; /* unprocessed amount in data */ -} SHA_INFO; -static void sha_init(SHA_INFO *); -static void sha_update(SHA_INFO *, const AP_BYTE *, int); -static void sha_final(SHA_INFO *); -static void sha_raw_swap(SHA_INFO *); -static void output64chunk(unsigned char, unsigned char, unsigned char, - int, unsigned char **); -static void encode_mime64(unsigned char *, unsigned char *, int); -void sha1_base64(char *, int, char *); +typedef unsigned char AP_BYTE; /* do SHA transformation */ -static void sha_transform(SHA_INFO *sha_info) +static void sha_transform(AP_SHA1_CTX *sha_info) { int i; AP_LONG temp, A, B, C, D, E, W[80]; @@ -236,7 +202,7 @@ int i; AP_BYTE ct[4], *cp; - if (isLittleEndian()) { /* do the swap only if it is little endian */ + if (isLittleEndian()) { /* do the swap only if it is little endian */ count /= sizeof(AP_LONG); cp = (AP_BYTE *) buffer; for (i = 0; i < count; ++i) { @@ -255,7 +221,7 @@ /* initialize the SHA digest */ -static void sha_init(SHA_INFO *sha_info) +API_EXPORT(void) ap_SHA1Init(AP_SHA1_CTX *sha_info) { sha_info->digest[0] = 0x67452301L; sha_info->digest[1] = 0xefcdab89L; @@ -269,9 +235,11 @@ /* update the SHA digest */ -static void sha_update(SHA_INFO *sha_info, const AP_BYTE *buffer, int count) +API_EXPORT(void) ap_SHA1Update_binary(AP_SHA1_CTX *sha_info, + const unsigned char *buffer, + unsigned int count) { - int i; + unsigned int i; if ((sha_info->count_lo + ((AP_LONG) count << 3)) < sha_info->count_lo) { ++sha_info->count_hi; @@ -306,12 +274,58 @@ sha_info->local = count; } +API_EXPORT(void) ap_SHA1Update(AP_SHA1_CTX *sha_info, const char *buf, + unsigned int count) +{ +#ifdef CHARSET_EBCDIC + int i; + const AP_BYTE *buffer = (const AP_BYTE *) buf; + + if ((sha_info->count_lo + ((AP_LONG) count << 3)) < sha_info->count_lo) { + ++sha_info->count_hi; + } + sha_info->count_lo += (AP_LONG) count << 3; + sha_info->count_hi += (AP_LONG) count >> 29; + /* Is there a remainder of the previous Update operation? */ + if (sha_info->local) { + i = SHA_BLOCKSIZE - sha_info->local; + if (i > count) { + i = count; + } + ebcdic2ascii_strictly(((AP_BYTE *) sha_info->data) + sha_info->local, + buffer, i); + count -= i; + buffer += i; + sha_info->local += i; + if (sha_info->local == SHA_BLOCKSIZE) { + maybe_byte_reverse(sha_info->data, SHA_BLOCKSIZE); + sha_transform(sha_info); + } + else { + return; + } + } + while (count >= SHA_BLOCKSIZE) { + ebcdic2ascii_strictly((AP_BYTE *)sha_info->data, buffer, SHA_BLOCKSIZE); + buffer += SHA_BLOCKSIZE; + count -= SHA_BLOCKSIZE; + maybe_byte_reverse(sha_info->data, SHA_BLOCKSIZE); + sha_transform(sha_info); + } + ebcdic2ascii_strictly((AP_BYTE *)sha_info->data, buffer, count); + sha_info->local = count; +#else + ap_SHA1Update_binary(sha_info, (const unsigned char *) buf, count); +#endif +} + /* finish computing the SHA digest */ -static void sha_final(SHA_INFO *sha_info) +API_EXPORT(void) ap_SHA1Final(unsigned char digest[SHA_DIGESTSIZE], + AP_SHA1_CTX *sha_info) { - int count; - AP_LONG lo_bit_count, hi_bit_count; + int count, i, j; + AP_LONG lo_bit_count, hi_bit_count, k; lo_bit_count = sha_info->count_lo; hi_bit_count = sha_info->count_hi; @@ -331,90 +345,39 @@ sha_info->data[14] = hi_bit_count; sha_info->data[15] = lo_bit_count; sha_transform(sha_info); -} - -/* - internally implemented as an array of longs, need to swap if - you're going to access the memory in the raw, instead of looping - through with arrays of longs. -*/ - -static void sha_raw_swap(SHA_INFO *sha_info) -{ - int i; - - for (i = 0; i < 5; ++i) { - maybe_byte_reverse((AP_LONG *) &sha_info->digest[i], 4); - } -} - -static char basis_64[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -static void output64chunk(unsigned char c1, unsigned char c2, unsigned char c3, - int pads, unsigned char **outfile) -{ - *(*outfile)++ = basis_64[c1>>2]; - - *(*outfile)++ = basis_64[((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)]; - if (pads == 2) { - *(*outfile)++ = '='; - *(*outfile)++ = '='; - } - else if (pads) { - *(*outfile)++ = basis_64[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)]; - *(*outfile)++ = '='; - } - else { - *(*outfile)++ = basis_64[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)]; - *(*outfile)++ = basis_64[c3 & 0x3F]; - } -} - -static void encode_mime64(unsigned char *in, unsigned char *out, int length) -{ - int diff, ct = 0; - while ((diff = length - ct)) { - if ( diff >= 3 ) { - diff = 3; - output64chunk(in[ct], in[ct+1], in[ct+2], 0, &out); - } - else if (diff == 2) { - output64chunk(in[ct], in[ct+1], 0, 1, &out); - } - else if (diff == 1) { - output64chunk(in[ct], 0, 0, 2, &out); - } - ct += diff; + for (i = 0, j = 0; j < SHA_DIGESTSIZE; i++) { + k = sha_info->digest[i]; + digest[j++] = (unsigned char) ((k >> 24) & 0xff); + digest[j++] = (unsigned char) ((k >> 16) & 0xff); + digest[j++] = (unsigned char) ((k >> 8) & 0xff); + digest[j++] = (unsigned char) (k & 0xff); } - *out++ = 0; } -/* {SHA} is the prefix used for base64 encoded sha1 in - * ldap data interchange format. - */ -const char *sha1_id = "{SHA}"; API_EXPORT(void) ap_sha1_base64(const char *clear, int len, char *out) { - SHA_INFO context; + int l; + AP_SHA1_CTX context; + AP_BYTE digest[SHA_DIGESTSIZE]; - if (!strncmp(clear, sha1_id, strlen(sha1_id))) { - clear += strlen(sha1_id); + if (strncmp(clear, AP_SHA1PW_ID, AP_SHA1PW_IDLEN) == 0) { + clear += AP_SHA1PW_IDLEN; } - sha_init(&context); - sha_update(&context, clear, len); - sha_final(&context); - - sha_raw_swap(&context); + ap_SHA1Init(&context); + ap_SHA1Update(&context, clear, len); + ap_SHA1Final(digest, &context); /* private marker. */ - strcpy(out, sha1_id); + ap_cpystrn(out, AP_SHA1PW_ID, AP_SHA1PW_IDLEN + 1); /* SHA1 hash is always 20 chars */ - encode_mime64((char *)context.digest, out+strlen(sha1_id), 20); - /* output of MIME Base 64 encoded SHA1 is always - * 28 characters + strlen(sha1_id) */ + l = ap_base64encode_binary(out + AP_SHA1PW_IDLEN, digest, sizeof(digest)); + out[l + AP_SHA1PW_IDLEN] = '\0'; + + /* + * output of base64 encoded SHA1 is always 28 chars + AP_SHA1PW_IDLEN + */ } 1.2 +5 -0 apache-2.0/mpm/src/ap/ap_snprintf.c Index: ap_snprintf.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/ap/ap_snprintf.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- ap_snprintf.c 1999/06/18 18:39:24 1.1 +++ ap_snprintf.c 1999/08/17 20:57:48 1.2 @@ -89,7 +89,12 @@ typedef WIDE_INT wide_int; typedef unsigned WIDE_INT u_wide_int; typedef WIDEST_INT widest_int; +#ifdef __TANDEM +/* Although Tandem supports "long long" there is no unsigned variant. */ +typedef unsigned long u_widest_int; +#else typedef unsigned WIDEST_INT u_widest_int; +#endif typedef int bool_int; #define S_NULL "(null)" 1.1 apache-2.0/mpm/src/ap/ap_base64.c Index: ap_base64.c =================================================================== /* ==================================================================== * Copyright (c) 1995-1999 The Apache Group. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgment: * "This product includes software developed by the Apache Group * for use in the Apache HTTP server project (http://www.apache.org/)." * * 4. The names "Apache Server" and "Apache Group" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please contact * [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * 6. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by the Apache Group * for use in the Apache HTTP server project (http://www.apache.org/)." * * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Group and was originally based * on public domain software written at the National Center for * Supercomputing Applications, University of Illinois, Urbana-Champaign. * For more information on the Apache Group and the Apache HTTP server * project, please see <http://www.apache.org/>. * */ /* base64 encoder/decoder. Originally part of main/util.c * but moved here so that support/ab and ap_sha1.c could * use it. This meant removing the ap_palloc()s and adding * ugly 'len' functions, which is quite a nasty cost. */ #include <string.h> #include "ap_config.h" #include "ap.h" #ifdef CHARSET_EBCDIC #include "ebcdic.h" #endif /* CHARSET_EBCDIC */ /* aaaack but it's fast and const should make it shared text page. */ static const unsigned char pr2six[256] = { #ifndef CHARSET_EBCDIC /* ASCII table */ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64, 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 #else /*CHARSET_EBCDIC*/ /* EBCDIC table */ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 64, 64, 64, 64, 64, 64, 64, 35, 36, 37, 38, 39, 40, 41, 42, 43, 64, 64, 64, 64, 64, 64, 64, 64, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 64, 64, 64, 64, 64, 64, 64, 9, 10, 11, 12, 13, 14, 15, 16, 17, 64, 64, 64, 64, 64, 64, 64, 64, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, 64, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64 #endif /*CHARSET_EBCDIC*/ }; API_EXPORT(int) ap_base64decode_len(const char *bufcoded) { int nbytesdecoded; register const unsigned char *bufin; register int nprbytes; bufin = (const unsigned char *) bufcoded; while (pr2six[*(bufin++)] <= 63); nprbytes = (bufin - (const unsigned char *) bufcoded) - 1; nbytesdecoded = ((nprbytes + 3) / 4) * 3; return nbytesdecoded + 1; } API_EXPORT(int) ap_base64decode(char *bufplain, const char *bufcoded) { #ifdef CHARSET_EBCDIC int i; #endif /* CHARSET_EBCDIC */ int len; len = ap_base64decode_binary((unsigned char *) bufplain, bufcoded); #ifdef CHARSET_EBCDIC for (i = 0; i < len; i++) bufplain[i] = os_toebcdic[bufplain[i]]; #endif /* CHARSET_EBCDIC */ return len; } /* This is the same as ap_base64udecode() except on EBCDIC machines, where * the conversion of the output to ebcdic is left out. */ API_EXPORT(int) ap_base64decode_binary(unsigned char *bufplain, const char *bufcoded) { int nbytesdecoded; register const unsigned char *bufin; register unsigned char *bufout; register int nprbytes; bufin = (const unsigned char *) bufcoded; while (pr2six[*(bufin++)] <= 63); nprbytes = (bufin - (const unsigned char *) bufcoded) - 1; nbytesdecoded = ((nprbytes + 3) / 4) * 3; bufout = (unsigned char *) bufplain; bufin = (const unsigned char *) bufcoded; while (nprbytes > 4) { *(bufout++) = (unsigned char) (pr2six[*bufin] << 2 | pr2six[bufin[1]] >> 4); *(bufout++) = (unsigned char) (pr2six[bufin[1]] << 4 | pr2six[bufin[2]] >> 2); *(bufout++) = (unsigned char) (pr2six[bufin[2]] << 6 | pr2six[bufin[3]]); bufin += 4; nprbytes -= 4; } /* Note: (nprbytes == 1) would be an error, so just ingore that case */ if (nprbytes > 1) { *(bufout++) = (unsigned char) (pr2six[*bufin] << 2 | pr2six[bufin[1]] >> 4); } if (nprbytes > 2) { *(bufout++) = (unsigned char) (pr2six[bufin[1]] << 4 | pr2six[bufin[2]] >> 2); } if (nprbytes > 3) { *(bufout++) = (unsigned char) (pr2six[bufin[2]] << 6 | pr2six[bufin[3]]); } *(bufout++) = '\0'; nbytesdecoded -= (4 - nprbytes) & 3; return nbytesdecoded; } static const char basis_64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; API_EXPORT(int) ap_base64encode_len(int len) { return ((len + 2) / 3 * 4) + 1; } API_EXPORT(int) ap_base64encode(char *encoded, const char *string, int len) { #ifndef CHARSET_EBCDIC return ap_base64encode_binary(encoded, (const unsigned char *) string, len); #else /* CHARSET_EBCDIC */ int i; char *p; p = encoded; for (i = 0; i < len - 2; i += 3) { *p++ = basis_64[(os_toascii[string[i]] >> 2) & 0x3F]; *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) | ((int) (os_toascii[string[i + 1]] & 0xF0) >> 4)]; *p++ = basis_64[((os_toascii[string[i + 1]] & 0xF) << 2) | ((int) (os_toascii[string[i + 2]] & 0xC0) >> 6)]; *p++ = basis_64[os_toascii[string[i + 2]] & 0x3F]; } if (i < len) { *p++ = basis_64[(os_toascii[string[i]] >> 2) & 0x3F]; if (i == (len - 1)) { *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4)]; *p++ = '='; } else { *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) | ((int) (os_toascii[string[i + 1]] & 0xF0) >> 4)]; *p++ = basis_64[((os_toascii[string[i + 1]] & 0xF) << 2)]; } *p++ = '='; } *p++ = '\0'; return p - encoded; #endif /* CHARSET_EBCDIC */ } /* This is the same as ap_base64encode() except on EBCDIC machines, where * the conversion of the input to ascii is left out. */ API_EXPORT(int) ap_base64encode_binary(char *encoded, const unsigned char *string, int len) { int i; char *p; p = encoded; for (i = 0; i < len - 2; i += 3) { *p++ = basis_64[(string[i] >> 2) & 0x3F]; *p++ = basis_64[((string[i] & 0x3) << 4) | ((int) (string[i + 1] & 0xF0) >> 4)]; *p++ = basis_64[((string[i + 1] & 0xF) << 2) | ((int) (string[i + 2] & 0xC0) >> 6)]; *p++ = basis_64[string[i + 2] & 0x3F]; } if (i < len) { *p++ = basis_64[(string[i] >> 2) & 0x3F]; if (i == (len - 1)) { *p++ = basis_64[((string[i] & 0x3) << 4)]; *p++ = '='; } else { *p++ = basis_64[((string[i] & 0x3) << 4) | ((int) (string[i + 1] & 0xF0) >> 4)]; *p++ = basis_64[((string[i + 1] & 0xF) << 2)]; } *p++ = '='; } *p++ = '\0'; return p - encoded; } 1.3 +9 -2 apache-2.0/mpm/src/helpers/GuessOS Index: GuessOS =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/helpers/GuessOS,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- GuessOS 1999/08/06 00:54:11 1.2 +++ GuessOS 1999/08/17 20:58:11 1.3 @@ -198,8 +198,15 @@ echo "${MACHINE}-whatever-unixware212"; exit 0 ;; - DYNIX/ptx:4*:*) - echo "${MACHINE}-whatever-sysv4"; exit 0 + DYNIX/ptx:4*:*:i386) + PTXVER=`echo ${VERSION}|sed -e 's/[^.]//'` + echo "${MACHINE}-sequent-ptx${PTXVER}"; exit 0 + ;; + + *:3.2.0:*:i386) + # uname on DYNIX/ptx below V4.0.0 is brain dead + PTXVER=`echo ${VERSION}|sed -e 's/[^.]//'` + echo "${MACHINE}-sequent-ptx${PTXVER}"; exit 0 ;; *:4.0:3.0:[345][0-9]?? | *:4.0:3.0:3[34]??[/,]* | library:*) 1.2 +6 -5 apache-2.0/mpm/src/helpers/binbuild.sh Index: binbuild.sh =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/helpers/binbuild.sh,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- binbuild.sh 1999/06/18 18:39:26 1.1 +++ binbuild.sh 1999/08/17 20:58:16 1.2 @@ -222,8 +222,8 @@ echo " -e \"s;[EMAIL PROTECTED]@;\$SR/libexec;\" -e \"s;[EMAIL PROTECTED]@;\$SR/include;\" \\" && \ echo " -e \"s;[EMAIL PROTECTED]@;\$SR/conf;\" bindist/bin/apxs > \$SR/bin/apxs" && \ echo "sed -e \"s;^#!/.*;#!\$PERL;\" bindist/bin/dbmmanage > \$SR/bin/dbmmanage" && \ - echo "sed -e \"s%/usr/local/apache%\$SR/%\" \$SR/conf/httpd.conf.default > \$SR/conf/httpd.conf" && \ - echo "sed -e \"s%PIDFILE=%PIDFILE=\$SR/%\" -e \"s%HTTPD=%HTTPD=\\\"\$SR/%\" -e \"s%httpd\$%httpd -d \$SR\\\"%\" bindist/bin/apachectl > \$SR/bin/apachectl" && \ + echo "sed -e \"s%/usr/local/apache%\$SR%\" \$SR/conf/httpd.conf.default > \$SR/conf/httpd.conf" && \ + echo "sed -e \"s%PIDFILE=%PIDFILE=\$SR/%\" -e \"s%HTTPD=%HTTPD=\\\"\$SR/%\" -e \"s%httpd\$%httpd -d \$SR -R \$SR/libexec\\\"%\" bindist/bin/apachectl > \$SR/bin/apachectl" && \ echo " " && \ echo "echo \"Ready.\"" && \ echo "echo \" +--------------------------------------------------------+\"" && \ @@ -246,9 +246,10 @@ ) > install-bindist.sh chmod 755 install-bindist.sh -sed -e "s%\"/htdocs%\"/usr/local/apache/htdocs%" \ - -e "s%\"/icons%\"/usr/local/apache/icons%" \ - -e "s%\"/cgi-bin%\"/usr/local/apache/cgi-bin%" \ +sed -e "s%\"htdocs%\"/usr/local/apache/htdocs%" \ + -e "s%\"icons%\"/usr/local/apache/icons%" \ + -e "s%\"cgi-bin%\"/usr/local/apache/cgi-bin%" \ + -e "s%\"proxy%\"/usr/local/apache/proxy%" \ -e "s%^ServerAdmin.*%ServerAdmin [EMAIL PROTECTED]" \ -e "s%#ServerName.*%#ServerName localhost%" \ -e "s%Port 8080%Port 80%" \ 1.2 +11 -0 apache-2.0/mpm/src/helpers/find-dbm-lib Index: find-dbm-lib =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/helpers/find-dbm-lib,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- find-dbm-lib 1999/06/18 18:39:27 1.1 +++ find-dbm-lib 1999/08/17 20:58:20 1.2 @@ -33,6 +33,17 @@ found_dbm=0 LIBS="$oldLIBS" fi + else + for dblib in dbm ndbm db + do + DBM_LIB="" + if ./helpers/TestCompile lib $dblib dbm_open; then + DBM_LIB="-l${dblib}" + LIBS="$LIBS $DBM_LIB" + found_dbm=1 + break + fi + done fi ;; esac 1.3 +24 -0 apache-2.0/mpm/src/include/ap.h Index: ap.h =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/include/ap.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- ap.h 1999/08/06 00:54:16 1.2 +++ ap.h 1999/08/17 20:58:32 1.3 @@ -161,6 +161,30 @@ __attribute__((format(printf,3,4))); API_EXPORT(int) ap_vsnprintf(char *buf, size_t len, const char *format, va_list ap); +/* Simple BASE64 encode/decode functions. + * + * As we might encode binary strings, hence we require the length of + * the incoming plain source. And return the length of what we decoded. + * + * The decoding function takes any non valid char (i.e. whitespace, \0 + * or anything non A-Z,0-9 etc as terminal. + * + * plain strings/binary sequences are not assumed '\0' terminated. Encoded + * strings are neither. But propably should. + * + */ +API_EXPORT(int) ap_base64encode_len(int len); +API_EXPORT(int) ap_base64encode(char * coded_dst, const char *plain_src,int len_plain_src); +API_EXPORT(int) ap_base64encode_binary(char * coded_dst, const unsigned char *plain_src,int len_plain_src); + +API_EXPORT(int) ap_base64decode_len(const char * coded_src); +API_EXPORT(int) ap_base64decode(char * plain_dst, const char *coded_src); +API_EXPORT(int) ap_base64decode_binary(unsigned char * plain_dst, const char *coded_src); + +/* Password validation, as used in AuthType Basic which is able to cope + * (based on the prexix) with the SHA1, Apache's internal MD5 and (depending + * on your platform either plain or crypt(3) passwords. + */ API_EXPORT(char *) ap_validate_password(const char *passwd, const char *hash); #ifdef __cplusplus 1.6 +28 -5 apache-2.0/mpm/src/include/ap_config.h Index: ap_config.h =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/include/ap_config.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -u -r1.5 -r1.6 --- ap_config.h 1999/08/12 08:11:44 1.5 +++ ap_config.h 1999/08/17 20:58:35 1.6 @@ -327,11 +327,34 @@ typedef int rlim_t; #elif defined(SEQUENT) -#define HAVE_GMTOFF 1 -#undef NO_KILLPG -#define NO_SETSID -#define NEED_STRDUP +#define DEFAULT_USER "nobody" +#define DEFAULT_GROUP "nobody" +#define NO_SHMGET 1 +#define HAVE_MMAP 1 #define HAVE_SYSLOG 1 +#define USE_MMAP_FILES 1 +#define USE_MMAP_SCOREBOARD 1 +#define USE_FCNTL_SERIALIZED_ACCEPT 1 +#define JMP_BUF sigjmp_buf +#undef NO_SETSID +#if SEQUENT < 40 +typedef int rlim_t; +#define NO_GETTIMEOFDAY +#undef HAVE_SYS_RESOURCE_H /* exists but does not provide *rlimit funcs */ +#include <sys/times.h> +#endif +#if SEQUENT < 42 +#define NEED_STRCASECMP +#define NEED_STRNCASECMP +#endif +#if SEQUENT < 44 +#define NO_KILLPG 1 +#define NET_SIZE_T int +#endif +#if SEQUENT >= 44 +#undef NO_KILLPG +#define NET_SIZE_T size_t +#endif #elif defined(NEXT) typedef unsigned short mode_t; @@ -991,7 +1014,7 @@ * __private_extern__. * For other systems, make that a no-op. */ -#if defined(MAC_OS) || defined(MAC_OS_X_SERVER) +#if (defined(MAC_OS) || defined(MAC_OS_X_SERVER)) && defined(__DYNAMIC__) #define ap_private_extern __private_extern__ #else #define ap_private_extern 1.3 +6 -1 apache-2.0/mpm/src/include/ap_md5.h Index: ap_md5.h =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/include/ap_md5.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- ap_md5.h 1999/08/06 00:54:17 1.2 +++ ap_md5.h 1999/08/17 20:58:36 1.3 @@ -104,7 +104,12 @@ unsigned char buffer[64]; /* input buffer */ } AP_MD5_CTX; -extern const char *apr1_id; /* MD5 passwd marker string */ +/* + * Define the Magic String prefix that identifies a password as being + * hashed using our algorithm. + */ +#define AP_MD5PW_ID "$apr1$" +#define AP_MD5PW_IDLEN 6 API_EXPORT(void) ap_MD5Init(AP_MD5_CTX *context); API_EXPORT(void) ap_MD5Update(AP_MD5_CTX *context, const unsigned char *input, 1.3 +10 -4 apache-2.0/mpm/src/include/ap_mmn.h Index: ap_mmn.h =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/include/ap_mmn.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- ap_mmn.h 1999/08/06 00:54:17 1.2 +++ ap_mmn.h 1999/08/17 20:58:37 1.3 @@ -217,9 +217,15 @@ * 19990320.1 - add ap_vrprintf() * 19990320.2 - add cmd_parms.context, ap_set_config_vectors, * export ap_add_file_conf - * 19990320.3 - add ap_regexec() - * 19990604.4 - add ap_field_noparam() - * 19990621.5 - add local_ip/host to conn_rec for mass-vhost + * 19990320.3 - add ap_regexec() and ap_regerror() + * 19990320.4 - add ap_field_noparam() + * 19990320.5 - add local_ip/host to conn_rec for mass-vhost + * 19990320.6 - add ap_SHA1Final(), ap_SHA1Init(), + * ap_SHA1Update_binary(), ap_SHA1Update(), + * ap_base64encode(), ap_base64encode_binary(), + * ap_base64encode_len(), ap_base64decode(), + * ap_base64decode_binary(), ap_base64decode_len(), + * ap_pbase64decode(), ap_pbase64encode() */ #define MODULE_MAGIC_COOKIE 0x41503133UL /* "AP13" */ @@ -227,7 +233,7 @@ #ifndef MODULE_MAGIC_NUMBER_MAJOR #define MODULE_MAGIC_NUMBER_MAJOR 19990320 #endif -#define MODULE_MAGIC_NUMBER_MINOR 5 /* 0...n */ +#define MODULE_MAGIC_NUMBER_MINOR 6 /* 0...n */ #define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR /* backward compat */ /* Useful for testing for features. */ 1.2 +27 -19 apache-2.0/mpm/src/include/ap_sha1.h Index: ap_sha1.h =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/include/ap_sha1.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- ap_sha1.h 1999/08/06 00:54:18 1.1 +++ ap_sha1.h 1999/08/17 20:58:38 1.2 @@ -58,23 +58,6 @@ * from Peter C. Gutmann's implementation as found in * Applied Cryptography by Bruce Schneier * This code is hereby placed in the public domain - * - * MIME Base 64 encoding based on src/metamail/codes.c in metamail, - * available at: ftp://thumper.bellcore.com/pub/nsb/ - * - * Metamail's copyright is: - * Copyright (c) 1991 Bell Communications Research, Inc. (Bellcore) - * - * Permission to use, copy, modify, and distribute this material - * for any purpose and without fee is hereby granted, provided - * that the above copyright notice and this permission notice - * appear in all copies, and that the name of Bellcore not be - * used in advertising or publicity pertaining to this - * material without the specific, prior written permission - * of an authorized representative of Bellcore. BELLCORE - * MAKES NO REPRESENTATIONS ABOUT THE ACCURACY OR SUITABILITY - * OF THIS MATERIAL FOR ANY PURPOSE. IT IS PROVIDED "AS IS", - * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. */ #ifndef APACHE_SHA1_H @@ -84,11 +67,36 @@ extern "C" { #endif -extern const char *sha1_id; /* passwd prefix marker for SHA1 */ +#define SHA_DIGESTSIZE 20 + +/* + * Define the Magic String prefix that identifies a password as being + * hashed using our algorithm. + */ +#define AP_SHA1PW_ID "{SHA}" +#define AP_SHA1PW_IDLEN 5 + +typedef unsigned long AP_LONG; /* a 32-bit quantity */ + +typedef struct { + AP_LONG digest[5]; /* message digest */ + AP_LONG count_lo, count_hi; /* 64-bit bit count */ + AP_LONG data[16]; /* SHA data buffer */ + int local; /* unprocessed amount in data */ +} AP_SHA1_CTX; + API_EXPORT(void) ap_sha1_base64(const char *clear, int len, char *out); +API_EXPORT(void) ap_SHA1Init(AP_SHA1_CTX *context); +API_EXPORT(void) ap_SHA1Update(AP_SHA1_CTX *context, const char *input, + unsigned int inputLen); +API_EXPORT(void) ap_SHA1Update_binary(AP_SHA1_CTX *context, + const unsigned char *input, + unsigned int inputLen); +API_EXPORT(void) ap_SHA1Final(unsigned char digest[SHA_DIGESTSIZE], + AP_SHA1_CTX *context); #ifdef __cplusplus } #endif -#endif /* !APACHE_MD5_H */ +#endif /* !APACHE_SHA1_H */ 1.13 +5 -2 apache-2.0/mpm/src/include/httpd.h Index: httpd.h =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/include/httpd.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -u -r1.12 -r1.13 --- httpd.h 1999/08/13 06:57:33 1.12 +++ httpd.h 1999/08/17 20:58:39 1.13 @@ -405,7 +405,7 @@ * Always increases along the same track as the source branch. * For example, Apache 1.4.2 would be '10402100', 2.5b7 would be '20500007'. */ -#define APACHE_RELEASE 10308000 +#define APACHE_RELEASE 10309100 #define SERVER_PROTOCOL "HTTP/1.1" #ifndef SERVER_SUPPORT @@ -951,8 +951,11 @@ API_EXPORT(int) ap_is_matchexp(const char *str); API_EXPORT(int) ap_strcmp_match(const char *str, const char *exp); API_EXPORT(int) ap_strcasecmp_match(const char *str, const char *exp); -API_EXPORT(char *) ap_uudecode(pool *, const char *); +API_EXPORT(char *) ap_pbase64decode(pool *p, const char *bufcoded); +API_EXPORT(char *) ap_pbase64encode(pool *p, char *string); +API_EXPORT(char *) ap_uudecode(pool *p, const char *bufcoded); API_EXPORT(char *) ap_uuencode(pool *p, char *string); + #ifdef OS2 void os2pathname(char *path); char *ap_double_quotes(pool *p, char *str); 1.23 +1 -0 apache-2.0/mpm/src/main/http_config.c Index: http_config.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/main/http_config.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -u -r1.22 -r1.23 --- http_config.c 1999/08/15 00:11:11 1.22 +++ http_config.c 1999/08/17 20:58:51 1.23 @@ -471,6 +471,7 @@ m->module_index = -1; /* simulate being unloaded, should * be unnecessary */ dynamic_modules--; + total_modules--; } API_EXPORT(void) ap_add_loaded_module(module *mod) 1.24 +3 -3 apache-2.0/mpm/src/main/http_core.c Index: http_core.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/main/http_core.c,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -u -r1.23 -r1.24 --- http_core.c 1999/08/17 20:07:46 1.23 +++ http_core.c 1999/08/17 20:58:53 1.24 @@ -2442,14 +2442,14 @@ static int do_nothing(request_rec *r) { return OK; } #ifdef USE_MMAP_FILES -struct mmap { +struct mmap_rec { void *mm; size_t length; }; static void mmap_cleanup(void *mmv) { - struct mmap *mmd = mmv; + struct mmap_rec *mmd = mmv; if (munmap(mmd->mm, mmd->length) == -1) { ap_log_error(APLOG_MARK, APLOG_ERR, NULL, @@ -2606,7 +2606,7 @@ #ifdef USE_MMAP_FILES } else { - struct mmap *mmd; + struct mmap_rec *mmd; mmd = ap_palloc(r->pool, sizeof(*mmd)); mmd->mm = mm; 1.9 +16 -2 apache-2.0/mpm/src/main/http_main.c Index: http_main.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/main/http_main.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -u -r1.8 -r1.9 --- http_main.c 1999/08/06 00:54:30 1.8 +++ http_main.c 1999/08/17 20:58:54 1.9 @@ -209,7 +209,7 @@ fprintf(stderr, "Usage: %s [-D name] [-d directory] [-f file]\n", bin); #endif fprintf(stderr, " %s [-C \"directive\"] [-c \"directive\"]\n", pad); - fprintf(stderr, " %s [-v] [-V] [-h] [-l] [-L] [-S] [-t]\n", pad); + fprintf(stderr, " %s [-v] [-V] [-h] [-l] [-L] [-S] [-t] [-T]\n", pad); fprintf(stderr, "Options:\n"); #ifdef SHARED_CORE fprintf(stderr, " -R directory : specify an alternate location for shared object files\n"); @@ -226,7 +226,8 @@ fprintf(stderr, " -L : list available configuration directives\n"); /* TODOC: -S has been replaced by '-t -D DUMP_VHOSTS' */ /* fprintf(stderr, " -S : show parsed settings (currently only vhost settings)\n"); */ - fprintf(stderr, " -t : run syntax test for configuration files only\n"); + fprintf(stderr, " -t : run syntax check for config files (with docroot check)\n"); + fprintf(stderr, " -T : run syntax check for config files (without docroot check)\n"); /* TODOC: -X goes away, expect MPMs to use -D options */ exit(1); } @@ -350,3 +351,16 @@ ap_destroy_pool(pglobal); exit(0); } + +#ifndef SHARED_CORE_BOOTSTRAP +/* + * Force ap_validate_password() into the image so that modules like + * mod_auth can use it even if they're dynamically loaded. + */ +void suck_in_ap_validate_password(void); +void suck_in_ap_validate_password(void) +{ + ap_validate_password("a", "b"); +} +#endif + 1.16 +17 -24 apache-2.0/mpm/src/main/http_protocol.c Index: http_protocol.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/main/http_protocol.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -u -r1.15 -r1.16 --- http_protocol.c 1999/08/06 00:54:31 1.15 +++ http_protocol.c 1999/08/17 20:58:55 1.16 @@ -974,7 +974,6 @@ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r, "request failed: URI too long"); ap_send_error_response(r, 0); - ap_rflush(r); ap_run_log_transaction(r); return r; } @@ -990,7 +989,6 @@ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r, "request failed: error reading the headers"); ap_send_error_response(r, 0); - ap_rflush(r); ap_run_log_transaction(r); return r; } @@ -1008,7 +1006,6 @@ r->header_only = 0; r->status = HTTP_BAD_REQUEST; ap_send_error_response(r, 0); - ap_rflush(r); ap_run_log_transaction(r); return r; } @@ -1041,7 +1038,6 @@ "client sent HTTP/1.1 request without hostname " "(see RFC2068 section 9, and 14.23): %s", r->uri); ap_send_error_response(r, 0); - ap_rflush(r); ap_run_log_transaction(r); return r; } @@ -1062,7 +1058,6 @@ "client sent an unrecognized expectation value of " "Expect: %s", expect); ap_send_error_response(r, 0); - ap_rflush(r); (void) ap_discard_request_body(r); ap_run_log_transaction(r); return r; @@ -1176,7 +1171,13 @@ return AUTH_REQUIRED; } - t = ap_uudecode(r->pool, auth_line); + /* CHARSET_EBCDIC Issue's here ?!? Compare with 32/9 instead + * as we are operating on an octed stream ? + */ + while (*auth_line== ' ' || *auth_line== '\t') + auth_line++; + + t = ap_pbase64decode(r->pool, auth_line); /* Note that this allocation has to be made from r->connection->pool * because it has the lifetime of the connection. The other allocations * are temporary and can be tossed away any time. @@ -2457,24 +2458,13 @@ ap_clear_table(r->err_headers_out); if (ap_is_HTTP_REDIRECT(status) || (status == HTTP_CREATED)) { - if ((location != NULL) && *location) { - ap_table_setn(r->headers_out, "Location", location); - } - else { - /* - * We're supposed to tell the client to go somewhere, - * but the destination was omitted. Turn this into - * a 500 status with an explanatory note in the error log. - */ - ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r, - "resource created or redirection requested " - "(status=%03d) but no Location field set " - "(URI=%s)", - r->status, r->unparsed_uri); - r->status = status = HTTP_INTERNAL_SERVER_ERROR; - r->status_line = NULL; - } - } + if ((location != NULL) && *location) { + ap_table_setn(r->headers_out, "Location", location); + } + else { + location = ""; /* avoids coredump when printing, below */ + } + } r->content_language = NULL; r->content_languages = NULL; @@ -2489,6 +2479,7 @@ if (r->header_only) { ap_finalize_request_protocol(r); + ap_rflush(r); return; } } @@ -2509,6 +2500,7 @@ if (custom_response[0] == '\"') { ap_rputs(custom_response + 1, r); ap_finalize_request_protocol(r); + ap_rflush(r); return; } /* @@ -2771,6 +2763,7 @@ ap_rputs("</BODY></HTML>\n", r); } ap_finalize_request_protocol(r); + ap_rflush(r); } IMPLEMENT_HOOK_RUN_ALL(int,post_read_request,(request_rec *r),(r),OK,DECLINED) 1.5 +30 -154 apache-2.0/mpm/src/main/util.c Index: util.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/main/util.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -u -r1.4 -r1.5 --- util.c 1999/08/06 00:54:33 1.4 +++ util.c 1999/08/17 20:58:56 1.5 @@ -1986,167 +1986,43 @@ return server_hostname; } -/* aaaack but it's fast and const should make it shared text page. */ -static const unsigned char pr2six[256] = -{ - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64, 64, 0, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 64, 64, 64, 64, 64, 64, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 -}; - -API_EXPORT(char *) ap_uudecode(pool *p, const char *bufcoded) +/* simple 'pool' alloc()ing glue to ap_base64.c + */ +API_EXPORT(char *) ap_pbase64decode(pool *p, const char *bufcoded) { - int nbytesdecoded; - register const unsigned char *bufin; - register char *bufplain; - register unsigned char *bufout; - register int nprbytes; - - /* Strip leading whitespace. */ - - while (*bufcoded == ' ' || *bufcoded == '\t') - bufcoded++; - - /* Figure out how many characters are in the input buffer. - * Allocate this many from the per-transaction pool for the result. - */ -#ifndef CHARSET_EBCDIC - bufin = (const unsigned char *) bufcoded; - while (pr2six[*(bufin++)] <= 63); - nprbytes = (bufin - (const unsigned char *) bufcoded) - 1; - nbytesdecoded = ((nprbytes + 3) / 4) * 3; - - bufplain = ap_palloc(p, nbytesdecoded + 1); - bufout = (unsigned char *) bufplain; - - bufin = (const unsigned char *) bufcoded; - - while (nprbytes > 4) { - *(bufout++) = - (unsigned char) (pr2six[*bufin] << 2 | pr2six[bufin[1]] >> 4); - *(bufout++) = - (unsigned char) (pr2six[bufin[1]] << 4 | pr2six[bufin[2]] >> 2); - *(bufout++) = - (unsigned char) (pr2six[bufin[2]] << 6 | pr2six[bufin[3]]); - bufin += 4; - nprbytes -= 4; - } - - /* Note: (nprbytes == 1) would be an error, so just ingore that case */ - if (nprbytes > 1) { - *(bufout++) = - (unsigned char) (pr2six[*bufin] << 2 | pr2six[bufin[1]] >> 4); - } - if (nprbytes > 2) { - *(bufout++) = - (unsigned char) (pr2six[bufin[1]] << 4 | pr2six[bufin[2]] >> 2); - } - if (nprbytes > 3) { - *(bufout++) = - (unsigned char) (pr2six[bufin[2]] << 6 | pr2six[bufin[3]]); - } -#else /*CHARSET_EBCDIC*/ - bufin = (const unsigned char *) bufcoded; - while (pr2six[os_toascii[(unsigned char)*(bufin++)]] <= 63); - nprbytes = (bufin - (const unsigned char *) bufcoded) - 1; - nbytesdecoded = ((nprbytes + 3) / 4) * 3; + char *decoded; + int l; - bufplain = ap_palloc(p, nbytesdecoded + 1); - bufout = (unsigned char *) bufplain; + decoded = (char *) ap_palloc(p, 1 + ap_base64decode_len(bufcoded)); + l = ap_base64decode(decoded, bufcoded); + decoded[l] = '\0'; /* make binary sequence into string */ - bufin = (const unsigned char *) bufcoded; + return decoded; +} - while (nprbytes > 4) { - *(bufout++) = os_toebcdic[ - (unsigned char) (pr2six[os_toascii[*bufin]] << 2 | pr2six[os_toascii[bufin[1]]] >> 4)]; - *(bufout++) = os_toebcdic[ - (unsigned char) (pr2six[os_toascii[bufin[1]]] << 4 | pr2six[os_toascii[bufin[2]]] >> 2)]; - *(bufout++) = os_toebcdic[ - (unsigned char) (pr2six[os_toascii[bufin[2]]] << 6 | pr2six[os_toascii[bufin[3]]])]; - bufin += 4; - nprbytes -= 4; - } +API_EXPORT(char *) ap_pbase64encode(pool *p, char *string) +{ + char *encoded; + int l = strlen(string); - /* Note: (nprbytes == 1) would be an error, so just ingore that case */ - if (nprbytes > 1) { - *(bufout++) = os_toebcdic[ - (unsigned char) (pr2six[os_toascii[*bufin]] << 2 | pr2six[os_toascii[bufin[1]]] >> 4)]; - } - if (nprbytes > 2) { - *(bufout++) = os_toebcdic[ - (unsigned char) (pr2six[os_toascii[bufin[1]]] << 4 | pr2six[os_toascii[bufin[2]]] >> 2)]; - } - if (nprbytes > 3) { - *(bufout++) = os_toebcdic[ - (unsigned char) (pr2six[os_toascii[bufin[2]]] << 6 | pr2six[os_toascii[bufin[3]]])]; - } -#endif /*CHARSET_EBCDIC*/ + encoded = (char *) ap_palloc(p, 1 + ap_base64encode_len(l)); + l = ap_base64encode(encoded, string, l); + encoded[l] = '\0'; /* make binary sequence into string */ - nbytesdecoded -= (4 - nprbytes) & 3; - bufplain[nbytesdecoded] = '\0'; + return encoded; +} - return bufplain; +/* deprecated names for the above two functions, here for compatibility + */ +API_EXPORT(char *) ap_uudecode(pool *p, const char *bufcoded) +{ + return ap_pbase64decode(p, bufcoded); } -static const char basis_64[] = -"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -API_EXPORT(char *) ap_uuencode(pool *a, char *string) +API_EXPORT(char *) ap_uuencode(pool *p, char *string) { - int i, len = strlen(string); - char *p; - char *encoded = (char *) ap_palloc(a, ((len+2) / 3 * 4) + 1); - - p = encoded; -#ifndef CHARSET_EBCDIC - for (i = 0; i < len-2; i += 3) { - *p++ = basis_64[(string[i] >> 2) & 0x3F]; - *p++ = basis_64[((string[i] & 0x3) << 4) | ((int) (string[i + 1] & 0xF0) >> 4)]; - *p++ = basis_64[((string[i + 1] & 0xF) << 2) | ((int) (string[i + 2] & 0xC0) >> 6)]; - *p++ = basis_64[string[i + 2] & 0x3F]; - } - if (i < len) { - *p++ = basis_64[(string[i] >> 2) & 0x3F]; - *p++ = basis_64[((string[i] & 0x3) << 4) | ((int) (string[i + 1] & 0xF0) >> 4)]; - if (i == (len-2)) - *p++ = basis_64[((string[i + 1] & 0xF) << 2)]; - else - *p++ = '='; - *p++ = '='; - } -#else /*CHARSET_EBCDIC*/ - for (i = 0; i < len-2; i += 3) { - *p++ = basis_64[(os_toascii[string[i]] >> 2) & 0x3F]; - *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) | ((int) (os_toascii[string[i + 1]] & 0xF0) >> 4)]; - *p++ = basis_64[((os_toascii[string[i + 1]] & 0xF) << 2) | ((int) (os_toascii[string[i + 2]] & 0xC0) >> 6)]; - *p++ = basis_64[os_toascii[string[i + 2]] & 0x3F]; - } - if (i < len) { - *p++ = basis_64[(os_toascii[string[i]] >> 2) & 0x3F]; - *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) | ((int) (os_toascii[string[i + 1]] & 0xF0) >> 4)]; - if (i == (len-2)) - *p++ = basis_64[((os_toascii[string[i + 1]] & 0xF) << 2)]; - else - *p++ = '='; - *p++ = '='; - } -#endif /*CHARSET_EBCDIC*/ - - *p = '\0'; - return encoded; -} + return ap_pbase64encode(p, string); +} #ifdef OS2 void os2pathname(char *path) 1.3 +1 -1 apache-2.0/mpm/src/main/util_script.c Index: util_script.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/main/util_script.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- util_script.c 1999/08/06 00:54:34 1.2 +++ util_script.c 1999/08/17 20:58:57 1.3 @@ -971,7 +971,7 @@ i++; } - if (CreateProcess(NULL, pCommand, NULL, NULL, TRUE, 0, pEnvBlock, + if (CreateProcess(NULL, pCommand, NULL, NULL, TRUE, DETACHED_PROCESS, pEnvBlock, ap_make_dirstr_parent(r->pool, r->filename), &si, &pi)) { if (fileType == eFileTypeEXE16) { 1.2 +9 -0 apache-2.0/mpm/src/modules/experimental/Makefile.tmpl Index: Makefile.tmpl =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/modules/experimental/Makefile.tmpl,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- Makefile.tmpl 1999/06/18 18:39:33 1.1 +++ Makefile.tmpl 1999/08/17 20:59:14 1.2 @@ -12,3 +12,12 @@ $(INCDIR)/util_uri.h $(INCDIR)/http_config.h \ $(INCDIR)/http_log.h $(INCDIR)/http_protocol.h \ $(INCDIR)/http_request.h $(INCDIR)/http_core.h +mod_digest.o: mod_digest.c $(INCDIR)/httpd.h \ + $(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \ + $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \ + $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \ + $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \ + $(INCDIR)/util_uri.h $(INCDIR)/http_config.h \ + $(INCDIR)/http_core.h $(INCDIR)/http_log.h \ + $(INCDIR)/http_protocol.h $(INCDIR)/util_md5.h \ + $(INCDIR)/ap_md5.h 1.1 apache-2.0/mpm/src/modules/experimental/mod_auth_digest.c <<Binary file>> 1.2 +1 -1 apache-2.0/mpm/src/modules/proxy/proxy_ftp.c Index: proxy_ftp.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/modules/proxy/proxy_ftp.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- proxy_ftp.c 1999/06/18 18:39:34 1.1 +++ proxy_ftp.c 1999/08/17 20:59:19 1.2 @@ -509,7 +509,7 @@ */ if ((password = ap_table_get(r->headers_in, "Authorization")) != NULL && strcasecmp(ap_getword(r->pool, &password, ' '), "Basic") == 0 - && (password = ap_uudecode(r->pool, password))[0] != ':') { + && (password = ap_pbase64decode(r->pool, password))[0] != ':') { /* Note that this allocation has to be made from r->connection->pool * because it has the lifetime of the connection. The other allocations * are temporary and can be tossed away any time. 1.17 +1 -1 apache-2.0/mpm/src/modules/standard/mod_access.c Index: mod_access.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/modules/standard/mod_access.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -u -r1.16 -r1.17 --- mod_access.c 1999/08/17 20:07:47 1.16 +++ mod_access.c 1999/08/17 20:59:22 1.17 @@ -202,7 +202,7 @@ mask = htonl(mask); } a->x.ip.mask = mask; - + a->x.ip.net = (a->x.ip.net & mask); /* pjr - This fixes PR 4770 */ } else if (ap_isdigit(*where) && is_ip(where)) { /* legacy syntax for ip addrs: a.b.c. ==> a.b.c.0/24 for example */ 1.2 +3 -3 apache-2.0/mpm/src/modules/standard/mod_unique_id.c Index: mod_unique_id.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/modules/standard/mod_unique_id.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- mod_unique_id.c 1999/06/18 18:39:39 1.1 +++ mod_unique_id.c 1999/08/17 20:59:23 1.2 @@ -110,7 +110,7 @@ * saving cpu cycles. The counter is never reset, and is used to permit up to * 64k requests in a single second by a single child. * - * The 112-bits of unique_id_rec are uuencoded using the alphabet + * The 112-bits of unique_id_rec are encoded using the alphabet * [EMAIL PROTECTED], resulting in 19 bytes of printable characters. That is then * stuffed into the environment variable UNIQUE_ID so that it is available to * other modules. The alphabet choice differs from normal base64 encoding @@ -190,7 +190,7 @@ unique_id_rec_size[4]; /* - * Calculate the size of the structure when uuencoded. + * Calculate the size of the structure when encoded. */ unique_id_rec_size_uu = (unique_id_rec_total_size*8+5)/6; @@ -305,7 +305,7 @@ cur_unique_id.counter = htons(cur_unique_id.counter); } -/* NOTE: This is *NOT* the same encoding used by uuencode ... the last two +/* NOTE: This is *NOT* the same encoding used by base64encode ... the last two * characters should be + and /. But those two characters have very special * meanings in URLs, and we want to make it easy to use identifiers in * URLs. So we replace them with @ and -. 1.2 +4 -1 apache-2.0/mpm/src/os/unix/os.c Index: os.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/os/unix/os.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- os.c 1999/06/18 18:39:43 1.1 +++ os.c 1999/08/17 20:59:27 1.2 @@ -109,7 +109,7 @@ return NULL; return NSLinkModule(image, path, TRUE); -#elif defined(OSF1) ||\ +#elif defined(OSF1) || defined(SEQUENT) ||\ (defined(__FreeBSD_version) && (__FreeBSD_version >= 220000)) return dlopen((char *)path, RTLD_NOW | RTLD_GLOBAL); @@ -160,6 +160,9 @@ retval = dlsym(handle, symbol); free(symbol); return retval; + +#elif defined(SEQUENT) + return dlsym(handle, (char *)symname); #else return dlsym(handle, symname); 1.4 +4 -2 apache-2.0/mpm/src/os/unix/unixd.c Index: unixd.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/os/unix/unixd.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -u -r1.3 -r1.4 --- unixd.c 1999/08/13 21:54:03 1.3 +++ unixd.c 1999/08/17 20:59:29 1.4 @@ -198,7 +198,8 @@ if (setuid(unixd_config.user_id) == -1) { GETUSERMODE(); ap_log_error(APLOG_MARK, APLOG_ALERT, NULL, - "setuid: unable to change to uid: %d", unixd_config.user_id); + "setuid: unable to change to uid: %ld", + (long) unixd_config.user_id); exit(1); } GETUSERMODE(); @@ -211,7 +212,8 @@ #endif setuid(unixd_config.user_id) == -1)) { ap_log_error(APLOG_MARK, APLOG_ALERT, NULL, - "setuid: unable to change to uid: %d", unixd_config.user_id); + "setuid: unable to change to uid: %ld", + (long) unixd_config.user_id); return -1; } #endif 1.3 +1 -1 apache-2.0/mpm/src/os/win32/registry.c Index: registry.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/os/win32/registry.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- registry.c 1999/08/06 00:55:37 1.2 +++ registry.c 1999/08/17 20:59:33 1.3 @@ -38,7 +38,7 @@ #define VENDOR "Apache Group" #define SOFTWARE "Apache" -#define VERSION "1.3.8 dev" +#define VERSION "1.3.9" #define REGKEY "SOFTWARE\\" VENDOR "\\" SOFTWARE "\\" VERSION 1.2 +28 -29 apache-2.0/mpm/src/os/win32/installer/installdll/install.c Index: install.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/os/win32/installer/installdll/install.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- install.c 1999/06/18 18:39:55 1.1 +++ install.c 1999/08/17 20:59:41 1.2 @@ -9,8 +9,7 @@ #define VERSION ( "1.003 " __DATE__ " " __TIME__ ) -#include <windows.h> -#include <winsock.h> +#include <winsock2.h> #include <string.h> #include <stdio.h> #include <direct.h> @@ -23,20 +22,14 @@ #undef strftime #endif +#define AP_WIN32ERROR 1 + /* Global to store the instance handle */ HINSTANCE hInstance = NULL; static char *szLogFilename = NULL; static FILE *fpLog = NULL; -void OpenLog(char *dir, char *fn) -{ - szLogFilename = malloc(strlen(dir) + 1 + strlen(fn) + 1); - sprintf(szLogFilename, "%s/%s", dir, fn); - - fpLog = fopen(szLogFilename, "a+"); -} - void LogMessage(char *fmt, ...) { char buf[4000]; @@ -70,13 +63,6 @@ fprintf(fpLog, "%s\n", buf); } -void CloseLog(void) -{ - if (fpLog) { - fclose(fpLog); - } -} - /* * MessageBox_error() is a helper function to display an error in a * message box, optionally including a Win32 error message. If @@ -87,8 +73,6 @@ * passed on to the Win32 MessageBox() call. */ -#define AP_WIN32ERROR 1 - int MessageBox_error(HWND hWnd, int opt, char *title, int mb_opt, char *fmt, ...) { @@ -162,6 +146,29 @@ return MessageBox(hWnd, buf, title, mb_opt); } +int OpenLog(HWND hwnd, char *dir, char *fn) +{ + szLogFilename = malloc(strlen(dir) + 1 + strlen(fn) + 1); + sprintf(szLogFilename, "%s\\%s", dir, fn); + + if ((fpLog = fopen(szLogFilename, "a+")) == NULL) { + MessageBox_error(hwnd, + AP_WIN32ERROR, + "Installation Problem", + MB_OK | MB_ICONSTOP, + "Cannot open log file %s", szLogFilename); + return -1; + } + return 0; +} + +void CloseLog(void) +{ + if (fpLog) { + fclose(fpLog); + } +} + /* * The next few functions handle expanding the @@ServerRoot@@ type * sequences found in the distribution files. The main entry point @@ -558,14 +565,6 @@ { CMD_COPY, ".tmp\\highperformance.conf-dist", "conf\\highperformance.conf-dist", OPT_EXPAND|OPT_OVERWRITE|OPT_DELETESOURCE }, - /* Move the default htdocs files into place, provided they don't already - * exist. - */ - { CMD_COPY, ".tmp\\index.html", "htdocs\\index.html", OPT_DELETESOURCE|OPT_SILENT }, - { CMD_RM, ".tmp\\index.html", NULL, OPT_SILENT }, - { CMD_COPY, ".tmp\\apache_pb.gif", "htdocs\\apache_pb.gif", OPT_DELETESOURCE|OPT_SILENT }, - { CMD_RM, ".tmp\\apache_pb.gif", NULL, OPT_SILENT }, - { CMD_RMDIR, ".tmp", NULL }, { CMD_END, NULL, NULL, OPT_NONE } @@ -583,7 +582,7 @@ ACTIONITEM *pactionItem; int end = 0; - OpenLog(szInst, "install.log"); + OpenLog(hwnd, szInst, "install.log"); LogMessage("STARTED %s", VERSION); LogMessage("src=%s support=%s inst=%s", szSrcDir, szSupport, szInst); @@ -593,7 +592,7 @@ pactionItem = actionTable; while (!end) { - LogMessage("command=%d in=%s out=%s options=%d", + LogMessage("command=%d 1in=%s out=%s options=%d", pactionItem->command, pactionItem->in ? pactionItem->in : "NULL", pactionItem->out ? pactionItem->out : "NULL", 1.3 +1 -1 apache-2.0/mpm/src/support/Makefile.tmpl Index: Makefile.tmpl =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/support/Makefile.tmpl,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- Makefile.tmpl 1999/08/06 00:55:45 1.2 +++ Makefile.tmpl 1999/08/17 20:59:51 1.3 @@ -1,6 +1,6 @@ CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -LIBS=-los -lap $(EXTRA_LIBS) $(LIBS1) +LIBS=-lap -los $(EXTRA_LIBS) $(LIBS1) INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) -L$(OSDIR) -L$(SRCDIR)/ap 1.3 +19 -57 apache-2.0/mpm/src/support/ab.c Index: ab.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/support/ab.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- ab.c 1999/08/06 00:55:47 1.2 +++ ab.c 1999/08/17 20:59:52 1.3 @@ -123,6 +123,7 @@ #define ap_select select #else /* (!)NO_APACHE_INCLUDES */ #include "ap_config.h" +#include "ap.h" #ifdef CHARSET_EBCDIC #include "ebcdic.h" #endif @@ -238,56 +239,6 @@ exit(errno); } -/* -- simple uuencode, lifted from main/util.c which - * needed the pool, so duplicated here with normal - * malloc. - */ -static const char basis_64[] = -"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -static char *uuencode(char *string) -{ - int i, len = strlen(string); - char *p; - char *encoded = (char *) malloc((len + 2) / 3 * 4 + 1); - p = encoded; -#ifndef CHARSET_EBCDIC - for (i = 0; i < len-2; i += 3) { - *p++ = basis_64[(string[i] >> 2) & 0x3F]; - *p++ = basis_64[((string[i] & 0x3) << 4) | ((int) (string[i + 1] & 0xF0) >> 4)]; - *p++ = basis_64[((string[i + 1] & 0xF) << 2) | ((int) (string[i + 2] & 0xC0) >> 6)]; - *p++ = basis_64[string[i + 2] & 0x3F]; - } - if (i < len) { - *p++ = basis_64[(string[i] >> 2) & 0x3F]; - *p++ = basis_64[((string[i] & 0x3) << 4) | ((int) (string[i + 1] & 0xF0) >> 4)]; - if (i == (len-2)) - *p++ = basis_64[((string[i + 1] & 0xF) << 2)]; - else - *p++ = '='; - *p++ = '='; - } -#else /*CHARSET_EBCDIC*/ - for (i = 0; i < len-2; i += 3) { - *p++ = basis_64[(os_toascii[string[i]] >> 2) & 0x3F]; - *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) | ((int) (os_toascii[string[i + 1]] & 0xF0) >> 4)]; - *p++ = basis_64[((os_toascii[string[i + 1]] & 0xF) << 2) | ((int) (os_toascii[string[i + 2]] & 0xC0) >> 6)]; - *p++ = basis_64[os_toascii[string[i + 2]] & 0x3F]; - } - if (i < len) { - *p++ = basis_64[(os_toascii[string[i]] >> 2) & 0x3F]; - *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) | ((int) (os_toascii[string[i + 1]] & 0xF0) >> 4)]; - if (i == (len-2)) - *p++ = basis_64[((os_toascii[string[i + 1]] & 0xF) << 2)]; - else - *p++ = '='; - *p++ = '='; - } -#endif /*CHARSET_EBCDIC*/ - *p = '\0'; - return encoded; -} - /* --------------------------------------------------------- */ /* write out request to a connection - assumes we can write @@ -1021,7 +972,8 @@ /* sort out command-line args and call test */ int main(int argc, char **argv) { - int c, r; + int c, r,l; + char tmp[1024]; /* table defaults */ tablestring = ""; @@ -1064,25 +1016,35 @@ case 'T': strcpy(content_type, optarg); break; - case 'C': + case 'C': strncat(cookie, "Cookie: ", sizeof(cookie)); strncat(cookie, optarg, sizeof(cookie)); strncat(cookie, "\r\n", sizeof(cookie)); break; - case 'A': - /* - * assume username passwd already to be in colon separated form. + case 'A': + /* assume username passwd already to be in colon separated form. Ready + * to be uu-encoded. */ + while(isspace(*optarg)) + optarg++; + l=ap_base64encode(tmp,optarg,strlen(optarg)); + tmp[l]='\0'; + strncat(auth, "Authorization: basic ", sizeof(auth)); - strncat(auth, uuencode(optarg), sizeof(auth)); + strncat(auth, tmp, sizeof(auth)); strncat(auth, "\r\n", sizeof(auth)); break; case 'P': /* * assume username passwd already to be in colon separated form. */ + while(isspace(*optarg)) + optarg++; + l=ap_base64encode(tmp,optarg,strlen(optarg)); + tmp[l]='\0'; + strncat(auth, "Proxy-Authorization: basic ", sizeof(auth)); - strncat(auth, uuencode(optarg), sizeof(auth)); + strncat(auth, tmp, sizeof(auth)); strncat(auth, "\r\n", sizeof(auth)); break; case 'H': 1.3 +11 -9 apache-2.0/mpm/src/support/htpasswd.c Index: htpasswd.c =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/support/htpasswd.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- htpasswd.c 1999/08/06 00:55:53 1.2 +++ htpasswd.c 1999/08/17 20:59:53 1.3 @@ -181,7 +181,7 @@ return ERR_PWMISMATCH; } pw = pwin; - bzero(pwv,sizeof(pwin)); + memset(pwv, '\0', sizeof(pwin)); } switch (alg) { @@ -213,7 +213,7 @@ ap_cpystrn(cpw, (char *)crypt(pw, salt), sizeof(cpw) - 1); break; } - bzero(pw,strlen(pw)); + memset(pw, '\0', strlen(pw)); /* * Check to see if the buffer is large enough to hold the username, @@ -242,15 +242,17 @@ ".\n"); fprintf(stderr, " -d Force CRYPT encryption of the password" #if (!(defined(WIN32) || defined(TPF))) - " (default)" + " (default)" #endif - ".\n"); - fprintf(stderr, " -p Force NO encryption of the password.\n"); + ".\n"); + fprintf(stderr, " -p Do not encrypt the password (plaintext).\n"); fprintf(stderr, " -s Force SHA encryption of the password.\n"); - fprintf(stderr, " -b Use the password from the command line rather "); - fprintf(stderr, "than prompting for it.\n"); - fprintf(stderr, "On Windows and TPF systems the '-m' flag is used by default.\n"); - fprintf(stderr, "On all other systems, the '-p' will propably not work.\n"); + fprintf(stderr, " -b Use the password from the command line rather " + "than prompting for it.\n"); + fprintf(stderr, + "On Windows and TPF systems the '-m' flag is used by default.\n"); + fprintf(stderr, + "On all other systems, the '-p' flag will probably not work.\n"); return ERR_SYNTAX; } 1.3 +11 -0 apache-2.0/mpm/src/support/httpd.8 Index: httpd.8 =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/support/httpd.8,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- httpd.8 1999/08/06 00:55:54 1.2 +++ httpd.8 1999/08/17 20:59:55 1.3 @@ -92,6 +92,12 @@ [ .B \-S ] +[ +.B \-t +] +[ +.B \-T +] .SH DESCRIPTION .B httpd @@ -163,6 +169,11 @@ Run syntax tests for configuration files only. The program immediately exits after these syntax parsing with either a return code of 0 (Syntax OK) or return code not equal to 0 (Syntax Error). +.TP +.B \-T +Same as option +.B \-t +but does not check the configured document roots. .TP .B \-X Run in single-process mode, for internal debugging purposes only; the daemon 1.3 +13 -0 apache-2.0/mpm/src/support/httpd.exp Index: httpd.exp =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/support/httpd.exp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -u -r1.2 -r1.3 --- httpd.exp 1999/08/06 00:55:54 1.2 +++ httpd.exp 1999/08/17 20:59:56 1.3 @@ -3,6 +3,10 @@ ap_MD5Final ap_MD5Init ap_MD5Update +ap_SHA1Final +ap_SHA1Init +ap_SHA1Update_binary +ap_SHA1Update ap_acquire_mutex ap_add_cgi_vars ap_add_common_vars @@ -18,6 +22,12 @@ ap_array_pstrcat ap_auth_name ap_auth_type +ap_base64encode +ap_base64encode_binary +ap_base64encode_len +ap_base64decode +ap_base64decode_binary +ap_base64decode_len ap_basic_http_header ap_bclose ap_bcreate @@ -216,6 +226,8 @@ ap_parse_uri ap_parse_uri_components ap_parse_vhost_addrs +ap_pbase64decode +ap_pbase64encode ap_pcalloc ap_pcfg_open_custom ap_pcfg_openfile @@ -307,6 +319,7 @@ ap_set_sub_req_protocol ap_setup_client_block ap_setup_prelinked_modules +ap_sha1_base64 ap_should_client_block ap_show_directives ap_show_modules 1.2 +2 -2 apache-2.0/mpm/src/test/check_chunked Index: check_chunked =================================================================== RCS file: /home/cvs/apache-2.0/mpm/src/test/check_chunked,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -u -r1.1 -r1.2 --- check_chunked 1999/06/18 18:39:59 1.1 +++ check_chunked 1999/08/17 21:00:07 1.2 @@ -24,9 +24,9 @@ for(;;) { $_ = <> || die "unexpected end of file!\n"; - m#^[0-9a-f]+ *\r$#i || die "bogus chunklen: $_"; + m#^([0-9a-f]+) *\r$#i || die "bogus chunklen: $_"; - my $chunklen = hex; + my $chunklen = hex($1); exit 0 if ($chunklen == 0);