BUG/MINOR: pattern: pattern comparison executed twice

If the pattern is set as case insensitive, the string comparison
is executed twice. The first time is insensitive comparison, the
second is sensitive.

This is a recent bug, no backport is needed.
This commit is contained in:
Thierry FOURNIER 2014-01-14 13:38:40 +01:00 committed by Willy Tarreau
parent 8663105095
commit 35249cb045

View File

@ -1222,11 +1222,14 @@ browse_list:
continue;
if (pattern.len != pat->len)
continue;
if ((pat->flags & PAT_F_IGNORE_CASE) &&
strncasecmp(pattern.ptr.str, pat->ptr.str, pat->len) != 0)
if (pat->flags & PAT_F_IGNORE_CASE) {
if (strncasecmp(pattern.ptr.str, pat->ptr.str, pat->len) != 0)
continue;
}
else {
if (strncmp(pattern.ptr.str, pat->ptr.str, pat->len) != 0)
continue;
}
goto found;
}
}
@ -1245,11 +1248,14 @@ browse_list:
list_for_each_entry(pat, &expr->patterns, list) {
if (pat->flags & PAT_F_TREE)
continue;
if ((pat->flags & PAT_F_IGNORE_CASE) &&
strcasecmp(pattern.ptr.reg->regstr, pat->ptr.reg->regstr) != 0)
if (pat->flags & PAT_F_IGNORE_CASE) {
if (strcasecmp(pattern.ptr.reg->regstr, pat->ptr.reg->regstr) != 0)
continue;
}
else {
if (strcmp(pattern.ptr.reg->regstr, pat->ptr.reg->regstr) != 0)
continue;
}
goto found;
}
}