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);