}
}
/* we can't check for NULL in provider as that kills integer 0
- * so we have to test each string/regexp case in the switch
- */
+ * so we have to test each string/regexp case in the switch
+ */
else {
switch (provider->match_type) {
case STRING_MATCH:
- if (!provider->match.string) {
- match = 0;
- }
- else if (strcasecmp(str, provider->match.string)) {
+ if (strcasecmp(str, provider->match.string)) {
match = 0;
}
break;
case STRING_CONTAINS:
- if (!provider->match.string) {
- match = 0;
- break;
- }
str1 = apr_pstrdup(r->pool, str);
ap_str_tolower(str1);
if (!strstr(str1, provider->match.string)) {
}
break;
case REGEX_MATCH:
- if (!provider->match.string) {
- match = 0;
- }
- else if (ap_regexec(provider->match.regex, str, 0, NULL, 0)
- == AP_REG_NOMATCH) {
+ if (ap_regexec(provider->match.regex, str, 0, NULL, 0)
+ == AP_REG_NOMATCH) {
match = 0;
}
break;
match,
rxend-match),
flags);
+ if (provider->match.regex == NULL) {
+ return "Bad regexp";
+ }
break;
case '*':
provider->match_type = DEFINED;