coar 98/10/23 13:07:40
Modified: src CHANGES src/main http_core.c Log: Fix problem with config parser not noticing if a container start line was missing the closing '>'. PR: 3279 Submitted by: Ryan Bloom <[EMAIL PROTECTED]> Reviewed by: Ken Coar Revision Changes Path 1.1123 +5 -0 apache-1.3/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.1122 retrieving revision 1.1123 diff -u -r1.1122 -r1.1123 --- CHANGES 1998/10/23 19:28:51 1.1122 +++ CHANGES 1998/10/23 20:07:37 1.1123 @@ -1,5 +1,10 @@ Changes with Apache 1.3.4 + *) The config parser wasn't correctly noticing a missing '>' + on container start lines (e.g., it wouldn't spot + "<Directory /" as a syntax error). [Ryan Bloom <[EMAIL PROTECTED]>] + PR#3279 + *) Add a 'RemoveHandler' directive which will selectively remove all handler associations for the specified file extensions. [Ryan Bloom <[EMAIL PROTECTED]>] PR#1799. 1.237 +35 -12 apache-1.3/src/main/http_core.c Index: http_core.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/main/http_core.c,v retrieving revision 1.236 retrieving revision 1.237 diff -u -r1.236 -r1.237 --- http_core.c 1998/10/23 19:06:26 1.236 +++ http_core.c 1998/10/23 20:07:39 1.237 @@ -1149,6 +1149,15 @@ return cmd->end_token; } +/* + * Report a missing-'>' syntax error. + */ +static char *unclosed_directive(cmd_parms *cmd) +{ + return ap_pstrcat(cmd->pool, cmd->cmd->name, + "> directive missing closing '>'", NULL); +} + static const char *dirsection(cmd_parms *cmd, void *dummy, const char *arg) { const char *errmsg; @@ -1167,10 +1176,12 @@ return err; } - if (endp) { - *endp = '\0'; + if (endp == NULL) { + return unclosed_directive(cmd); } + *endp = '\0'; + cmd->path = ap_getword_conf(cmd->pool, &arg); #ifdef OS2 /* Fix OS/2 HPFS filename case problem. */ @@ -1238,10 +1249,12 @@ return err; } - if (endp) { - *endp = '\0'; + if (endp == NULL) { + return unclosed_directive(cmd); } + *endp = '\0'; + cmd->path = ap_getword_conf(cmd->pool, &arg); cmd->override = OR_ALL|ACCESS_CONF; @@ -1304,10 +1317,12 @@ return err; } - if (endp) { - *endp = '\0'; + if (endp == NULL) { + return unclosed_directive(cmd); } + *endp = '\0'; + cmd->path = ap_getword_conf(cmd->pool, &arg); /* Only if not an .htaccess file */ if (!old_path) { @@ -1376,9 +1391,12 @@ module *found; int nest = 1; - if (endp) { - *endp = '\0'; + if (endp == NULL) { + return unclosed_directive(cmd); } + + *endp = '\0'; + if (not) { arg++; } @@ -1433,9 +1451,12 @@ int nest = 1; endp = strrchr(arg, '>'); - if (endp) { - *endp = '\0'; + if (endp == NULL) { + return unclosed_directive(cmd); } + + *endp = '\0'; + if (arg[0] == '!') { not = 1; arg++; @@ -1477,9 +1498,11 @@ return err; } - if (endp) { - *endp = '\0'; + if (endp == NULL) { + return unclosed_directive(cmd); } + + *endp = '\0'; /* FIXME: There's another feature waiting to happen here -- since you can now put multiple addresses/names on a single <VirtualHost>