fielding 99/02/09 04:30:05
Modified: src CHANGES src/include ap_mmn.h httpd.h src/main gen_test_char.c http_protocol.c util.c Log: Reverse prior commit of ap_find_opaque_token() so that it can be replaced by a slightly different method using ap_get_list_item(). Revision Changes Path 1.1240 +0 -3 apache-1.3/src/CHANGES Index: CHANGES =================================================================== RCS file: /home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.1239 retrieving revision 1.1240 diff -u -r1.1239 -r1.1240 --- CHANGES 1999/02/08 15:12:16 1.1239 +++ CHANGES 1999/02/09 12:29:48 1.1240 @@ -65,9 +65,6 @@ the NDBM library looks like Berkeley-DB based. [Ralf S. Engelschall] PR#3773 - *) Fix checking of ETags and other opaque 'tokens' by adding - ap_find_opaque_token(). PR#2065, 3657 [Ken Coar] - *) Add ability to handle DES or MD5 authentication passwords. [Ryan Bloom <[EMAIL PROTECTED]>] 1.27 +3 -6 apache-1.3/src/include/ap_mmn.h Index: ap_mmn.h =================================================================== RCS file: /home/cvs/apache-1.3/src/include/ap_mmn.h,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- ap_mmn.h 1999/02/08 15:12:18 1.26 +++ ap_mmn.h 1999/02/09 12:29:52 1.27 @@ -203,13 +203,10 @@ * scan_script_header -> ap_scan_script_header_err * - reordered entries in request_rec that were waiting * for a non-binary-compatible release. - * 19990108.1 - add ap_find_opaque_token() for things like ETags - * (1.3.5-dev) which can contain opaque quoted strings, and - * ap_MD5Encode() for MD5 password handling. + * (1.3.5-dev) + * 19990108.1 - add ap_MD5Encode() for MD5 password handling. * 19990108.2 - add ap_validate_password() and change ap_MD5Encode() - * (1.3.5-dev) to use a stronger algorithm (which is incompatible - * with the one introduced [but not released] with - * 19990108-1). + * to use a stronger algorithm. * 19990108.3 - add ap_find_list_item() and ap_get_list_item() */ 1.268 +0 -2 apache-1.3/src/include/httpd.h Index: httpd.h =================================================================== RCS file: /home/cvs/apache-1.3/src/include/httpd.h,v retrieving revision 1.267 retrieving revision 1.268 diff -u -r1.267 -r1.268 --- httpd.h 1999/02/08 15:12:18 1.267 +++ httpd.h 1999/02/09 12:29:53 1.268 @@ -936,8 +936,6 @@ API_EXPORT(char *) ap_get_list_item(pool *p, const char **field); API_EXPORT(char *) ap_get_token(pool *p, const char **accept_line, int accept_white); API_EXPORT(int) ap_find_token(pool *p, const char *line, const char *tok); -API_EXPORT(int) ap_find_opaque_token(pool *p, const char *line, - const char *tok); API_EXPORT(int) ap_find_last_token(pool *p, const char *line, const char *tok); API_EXPORT(int) ap_is_url(const char *u); 1.6 +1 -9 apache-1.3/src/main/gen_test_char.c Index: gen_test_char.c =================================================================== RCS file: /home/cvs/apache-1.3/src/main/gen_test_char.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- gen_test_char.c 1999/01/27 12:16:01 1.5 +++ gen_test_char.c 1999/02/09 12:29:56 1.6 @@ -8,7 +8,6 @@ #define T_ESCAPE_PATH_SEGMENT (0x02) #define T_OS_ESCAPE_PATH (0x04) #define T_HTTP_TOKEN_STOP (0x08) -#define T_HTTP_OPAQUETOKEN_STOP (0x10) int main(int argc, char *argv[]) { @@ -21,15 +20,13 @@ "#define T_ESCAPE_PATH_SEGMENT (%u)\n" "#define T_OS_ESCAPE_PATH (%u)\n" "#define T_HTTP_TOKEN_STOP (%u)\n" -"#define T_HTTP_OPAQUETOKEN_STOP (%u)\n" "\n" "static const unsigned char test_char_table[256] = {\n" " 0,", T_ESCAPE_SHELL_CMD, T_ESCAPE_PATH_SEGMENT, T_OS_ESCAPE_PATH, - T_HTTP_TOKEN_STOP, - T_HTTP_OPAQUETOKEN_STOP); + T_HTTP_TOKEN_STOP); /* we explicitly dealt with NUL above * in case some strchr() do bogosity with it */ @@ -55,11 +52,6 @@ /* these are the "tspecials" from RFC2068 */ if (ap_iscntrl(c) || strchr(" \t()<>@,;:\\/[]?={}", c)) { flags |= T_HTTP_TOKEN_STOP; - } - - /* some tokens (like etags) are opaque strings; stop at the end */ - if (ap_iscntrl(c) || strchr(" ,", c)) { - flags |= T_HTTP_OPAQUETOKEN_STOP; } printf("%u%c", flags, (c < 255) ? ',' : ' '); 1.256 +2 -4 apache-1.3/src/main/http_protocol.c Index: http_protocol.c =================================================================== RCS file: /home/cvs/apache-1.3/src/main/http_protocol.c,v retrieving revision 1.255 retrieving revision 1.256 diff -u -r1.255 -r1.256 --- http_protocol.c 1999/02/07 21:24:57 1.255 +++ http_protocol.c 1999/02/09 12:29:57 1.256 @@ -404,8 +404,7 @@ */ if ((if_match = ap_table_get(r->headers_in, "If-Match")) != NULL) { if ((etag == NULL) || - ((if_match[0] != '*') - && !ap_find_opaque_token(r->pool, if_match, etag))) { + ((if_match[0] != '*') && !ap_find_token(r->pool, if_match, etag))) { return HTTP_PRECONDITION_FAILED; } } @@ -438,8 +437,7 @@ int rstatus; if ((if_nonematch[0] == '*') - || ((etag != NULL) - && ap_find_opaque_token(r->pool, if_nonematch, etag))) { + || ((etag != NULL) && ap_find_token(r->pool, if_nonematch, etag))) { rstatus = (r->method_number == M_GET) ? HTTP_NOT_MODIFIED : HTTP_PRECONDITION_FAILED; return rstatus; 1.149 +0 -61 apache-1.3/src/main/util.c Index: util.c =================================================================== RCS file: /home/cvs/apache-1.3/src/main/util.c,v retrieving revision 1.148 retrieving revision 1.149 diff -u -r1.148 -r1.149 --- util.c 1999/02/08 15:12:19 1.148 +++ util.c 1999/02/09 12:29:58 1.149 @@ -1209,67 +1209,6 @@ } } -/* - * Find opaque HTTP tokens, which have no internal semantics and end - * at the first unquoted ',' or ' '. - */ -API_EXPORT(int) ap_find_opaque_token(pool *p, const char *line, - const char *tok) -{ - const unsigned char *start_token; - const unsigned char *s; - char stop_quote = '\0'; - - if (!line) { - return 0; - } - - s = (const unsigned char *)line; - for (;;) { - /* - * Find start of token, skip all stop characters, note NUL - * isn't a token stop, so we don't need to test for it - */ - while (TEST_CHAR(*s, T_HTTP_OPAQUETOKEN_STOP)) { - ++s; - } - if (!*s) { - return 0; - } - start_token = s; - /* - * Find end of the token - */ - while (*s) { - /* - * If we see the beginning of a quoted string ("foo" or <foo>), - * mark the end character so we know when to stop skipping. - */ - if (!stop_quote && ((*s == '"') || (*s == '<'))) { - stop_quote = (*s == '"') ? '"' : '>'; - } - else if (*s == stop_quote) { - stop_quote = '\0'; - } - /* - * If we're not inside a quoted string, check to see if we're - * at the end of the token. - */ - else if (!stop_quote && TEST_CHAR(*s, T_HTTP_OPAQUETOKEN_STOP)) { - break; - } - ++s; - } - if (!strncmp((const char *)start_token, (const char *)tok, - s - start_token)) { - return 1; - } - if (!*s) { - return 0; - } - } -} - API_EXPORT(int) ap_find_last_token(pool *p, const char *line, const char *tok) {