From: André Malo Date: Tue, 27 Jan 2004 00:22:10 +0000 (+0000) Subject: fix error handling during flag parsing X-Git-Tag: pre_ajp_proxy~765 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=968929e2fa76fdb5cbc5ad2a5e0b1985ade51ff9;p=apache fix error handling during flag parsing git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@102417 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/mappers/mod_rewrite.c b/modules/mappers/mod_rewrite.c index 94cdb5bde8..e5e054082d 100644 --- a/modules/mappers/mod_rewrite.c +++ b/modules/mappers/mod_rewrite.c @@ -3107,7 +3107,7 @@ static const char *cmd_rewriterule_setflag(apr_pool_t *p, void *_cfg, char *key, char *val) { rewriterule_entry *cfg = _cfg; - int status = 0; + int error = 0; switch (*key++) { case 'c': @@ -3133,6 +3133,9 @@ static const char *cmd_rewriterule_setflag(apr_pool_t *p, void *_cfg, cp->next = NULL; cp->data = val; } + else { + ++error; + } break; case 'e': @@ -3154,6 +3157,9 @@ static const char *cmd_rewriterule_setflag(apr_pool_t *p, void *_cfg, cp->next = NULL; cp->data = val; } + else { + ++error; + } break; case 'f': @@ -3162,6 +3168,9 @@ static const char *cmd_rewriterule_setflag(apr_pool_t *p, void *_cfg, cfg->flags |= (RULEFLAG_STATUS | RULEFLAG_NOSUB); cfg->forced_responsecode = HTTP_FORBIDDEN; } + else { + ++error; + } break; case 'g': @@ -3170,6 +3179,9 @@ static const char *cmd_rewriterule_setflag(apr_pool_t *p, void *_cfg, cfg->flags |= (RULEFLAG_STATUS | RULEFLAG_NOSUB); cfg->forced_responsecode = HTTP_GONE; } + else { + ++error; + } break; case 'h': @@ -3177,6 +3189,9 @@ static const char *cmd_rewriterule_setflag(apr_pool_t *p, void *_cfg, if (!*key || !strcasecmp(key, "andler")) { /* handler */ cfg->forced_handler = val; } + else { + ++error; + } break; case 'l': @@ -3184,6 +3199,9 @@ static const char *cmd_rewriterule_setflag(apr_pool_t *p, void *_cfg, if (!*key || !strcasecmp(key, "ast")) { /* last */ cfg->flags |= RULEFLAG_LASTRULE; } + else { + ++error; + } break; case 'n': @@ -3203,6 +3221,9 @@ static const char *cmd_rewriterule_setflag(apr_pool_t *p, void *_cfg, || !strcasecmp(key, "ocase")) { /* nocase */ cfg->flags |= RULEFLAG_NOCASE; } + else { + ++error; + } break; case 'p': @@ -3214,6 +3235,9 @@ static const char *cmd_rewriterule_setflag(apr_pool_t *p, void *_cfg, || !strcasecmp(key, "assthrough")) { /* passthrough */ cfg->flags |= RULEFLAG_PASSTHROUGH; } + else { + ++error; + } break; case 'q': @@ -3222,11 +3246,16 @@ static const char *cmd_rewriterule_setflag(apr_pool_t *p, void *_cfg, || !strcasecmp(key, "qsappend")) { /* qsappend */ cfg->flags |= RULEFLAG_QSAPPEND; } + else { + ++error; + } break; case 'r': case 'R': if (!*key || !strcasecmp(key, "edirect")) { /* redirect */ + int status = 0; + cfg->flags |= RULEFLAG_FORCEREDIRECT; if (strlen(val) > 0) { if (strcasecmp(val, "permanent") == 0) { @@ -3258,6 +3287,9 @@ static const char *cmd_rewriterule_setflag(apr_pool_t *p, void *_cfg, cfg->forced_responsecode = status; } } + else { + ++error; + } break; case 's': @@ -3265,6 +3297,9 @@ static const char *cmd_rewriterule_setflag(apr_pool_t *p, void *_cfg, if (!*key || !strcasecmp(key, "kip")) { /* skip */ cfg->skip = atoi(val); } + else { + ++error; + } break; case 't': @@ -3272,10 +3307,18 @@ static const char *cmd_rewriterule_setflag(apr_pool_t *p, void *_cfg, if (!*key || !strcasecmp(key, "ype")) { /* type */ cfg->forced_mimetype = val; } + else { + ++error; + } break; default: - return apr_pstrcat(p, "RewriteRule: unknown flag '", key, "'", NULL); + ++error; + break; + } + + if (error) { + return apr_pstrcat(p, "RewriteRule: unknown flag '", --key, "'", NULL); } return NULL;