coar 97/12/27 20:51:03
Modified: . STATUS
src CHANGES
src/ap Makefile.tmpl
src/main http_core.c
Added: src/ap ap_strings.c
Log:
Correct handling of quotation marks in AuthName realm names.
PR: 1195
Reviewed by: Dean Gaudet, Jim Jagielski
Revision Changes Path
1.38 +5 -6 apachen/STATUS
Index: STATUS
===================================================================
RCS file: /export/home/cvs/apachen/STATUS,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- STATUS 1997/12/27 23:08:20 1.37
+++ STATUS 1997/12/28 04:50:57 1.38
@@ -57,7 +57,9 @@
* Dean's [PATCH] fix Rasmus' chunking error
* [PATCH] PR#1366: fix result of send_fd_length
* Ben Hyde's [PATCH] Finish suite of mutex ops for non-threaded platforms
- * Ben Hyde's [PATCH] Serialize the update to pool.sub_* in destroy_pool
(take 2)
+ * Ben Hyde's [PATCH] Serialize the update to pool.sub_* in destroy_pool
+ (take 2)
+ * Ken's [PATCH] for PR#1195 (" in realm names)
Available Patches:
@@ -65,13 +67,10 @@
<[EMAIL PROTECTED]>
Status: Jim +1, Dirk +1, Marc wants to think about the name, Dean +1
- * [PATCH] mod_digest/1599: proxy authentication using the digest auth
scheme never succeeds (fwd)
+ * [PATCH] mod_digest/1599: proxy authentication using the digest auth
+ scheme never succeeds (fwd)
<[EMAIL PROTECTED]>
Status: Dean +1, Jim +1
-
- * Ken's [PATCH] for PR#1195 (" in realm names)
- <[EMAIL PROTECTED]>
- Status: Ken +1, Dean +1, Jim +1
* Dean's [PATCH] mod_status cleanups
<[EMAIL PROTECTED]>
1.550 +3 -0 apachen/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apachen/src/CHANGES,v
retrieving revision 1.549
retrieving revision 1.550
diff -u -r1.549 -r1.550
--- CHANGES 1997/12/28 04:23:41 1.549
+++ CHANGES 1997/12/28 04:50:59 1.550
@@ -1,5 +1,8 @@
Changes with Apache 1.3b4
+ *) Correct handling of quotation marks in AuthName realm names; as a
+ byproduct, a new function: ap_escape_quotes(). [Ken Coar] PR#1195
+
*) WIN32: Work around optimiser bug that killed ISAPI in release
versions. [Ben Laurie] PR#1533
1.5 +2 -1 apachen/src/ap/Makefile.tmpl
Index: Makefile.tmpl
===================================================================
RCS file: /export/home/cvs/apachen/src/ap/Makefile.tmpl,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Makefile.tmpl 1997/12/24 04:36:15 1.4
+++ Makefile.tmpl 1997/12/28 04:51:01 1.5
@@ -6,7 +6,7 @@
LIB=libap.a
-OBJS=ap_signal.o ap_slack.o ap_snprintf.o
+OBJS=ap_signal.o ap_slack.o ap_snprintf.o ap_strings.o
.c.o:
$(CC) -c $(INCLUDES) $(CFLAGS) $(SPACER) $<
@@ -27,3 +27,4 @@
ap_signal.o: $(INCDIR)/httpd.h
ap_slack.o: $(INCDIR)/httpd.h $(INCDIR)/http_log.h
ap_snprintf.o: $(INCDIR)/conf.h
+ap_strings.o: $(INCDIR)/httpd.h
1.1 apachen/src/ap/ap_strings.c
Index: ap_strings.c
===================================================================
/* ====================================================================
* Copyright (c) 1995-1997 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. 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/>.
*
*/
#include "httpd.h"
/*
* Given a string, replace any bare " with \" .
*/
char *ap_escape_quotes (pool *p, char *instring)
{
int newlen = 0;
char *inchr = instring;
char *outchr, *outstring;
/*
* Look through the input string, jogging the length of the output
* string up by an extra byte each time we find an unescaped ".
*/
while (*inchr != '\0') {
newlen++;
if (*inchr == '"') {
newlen++;
}
/*
* If we find a slosh, and it's not the last byte in the string,
* it's escaping something - advance past both bytes.
*/
if ((*inchr == '\\') && (inchr[1] != '\0')) {
inchr++;
}
inchr++;
}
outstring = palloc(p, newlen + 1);
inchr = instring;
outchr = outstring;
/*
* Now copy the input string to the output string, inserting a slosh
* in front of every " that doesn't already have one.
*/
while (*inchr != '\0') {
if ((*inchr == '\\') && (inchr[1] != '\0')) {
*outchr++ = *inchr++;
*outchr++ = *inchr++;
}
if (*inchr == '"') {
*outchr++ = '\\';
}
if (*inchr != '\0') {
*outchr++ = *inchr++;
}
}
*outchr = '\0';
return outstring;
}
1.143 +14 -2 apachen/src/main/http_core.c
Index: http_core.c
===================================================================
RCS file: /export/home/cvs/apachen/src/main/http_core.c,v
retrieving revision 1.142
retrieving revision 1.143
diff -u -r1.142 -r1.143
--- http_core.c 1997/11/30 19:18:46 1.142
+++ http_core.c 1997/12/28 04:51:02 1.143
@@ -1618,6 +1618,18 @@
return NULL;
}
+/*
+ * Load an authorisation realm into our location configuration, applying the
+ * usual rules that apply to realms.
+ */
+static const char *set_authname(cmd_parms *cmd, void *mconfig, char *word1)
+{
+ core_dir_config *aconfig = (core_dir_config *)mconfig;
+
+ aconfig->auth_name = ap_escape_quotes(cmd->pool, word1);
+ return NULL;
+}
+
/* Note --- ErrorDocument will now work from .htaccess files.
* The AllowOverride of Fileinfo allows webmasters to turn it off
*/
@@ -1646,8 +1658,8 @@
{ "</FilesMatch>", end_filesection, NULL, OR_ALL, NO_ARGS, "Marks end of
<FilesMatch>" },
{ "AuthType", set_string_slot, (void*)XtOffsetOf(core_dir_config, auth_type),
OR_AUTHCFG, TAKE1, "An HTTP authorization type (e.g., \"Basic\")" },
-{ "AuthName", set_string_slot, (void*)XtOffsetOf(core_dir_config, auth_name),
- OR_AUTHCFG, RAW_ARGS, "The authentication realm (e.g. \"Members Only\")"
},
+{ "AuthName", set_authname, NULL, OR_AUTHCFG, TAKE1,
+ "The authentication realm (e.g. \"Members Only\")" },
{ "Require", require, NULL, OR_AUTHCFG, RAW_ARGS, "Selects which
authenticated users or groups may access a protected space" },
{ "Satisfy", satisfy, NULL, OR_AUTHCFG, TAKE1,
"access policy if both allow and require used ('all' or 'any')" },