mirror of
https://github.com/nmap/nmap.git
synced 2025-12-06 04:31:29 +00:00
Fix an incorrect match case
This commit is contained in:
@@ -355,17 +355,20 @@ bool expr_match(const char *val, size_t vlen, const char *expr, size_t explen, b
|
||||
}
|
||||
}
|
||||
sublen = q ? q - p : explen - (p - expr);
|
||||
if (isxdigit(*subval)) {
|
||||
if (*p == '>') {
|
||||
if ((vlen > sublen - 1)
|
||||
|| (vlen == sublen - 1 && strncmp(subval, p + 1, vlen) > 0)) {
|
||||
return true;
|
||||
}
|
||||
goto next_expr;
|
||||
}
|
||||
else if (*p == '<') {
|
||||
if ((vlen < sublen - 1)
|
||||
|| (vlen == sublen - 1 && strncmp(subval, p + 1, vlen) < 0)) {
|
||||
return true;
|
||||
}
|
||||
goto next_expr;
|
||||
} else {
|
||||
q1 = strchr(p, '-');
|
||||
if (q1 != NULL) {
|
||||
@@ -379,11 +382,13 @@ bool expr_match(const char *val, size_t vlen, const char *expr, size_t explen, b
|
||||
return true;
|
||||
}
|
||||
}
|
||||
goto next_expr;
|
||||
}
|
||||
else if (vlen == sublen && !strncmp(p, subval, vlen)) {
|
||||
}
|
||||
}
|
||||
if (vlen == sublen && !strncmp(p, subval, vlen)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
next_expr:
|
||||
if (q)
|
||||
p = q + 1;
|
||||
|
||||
@@ -115,6 +115,8 @@ const struct expr_test tests[] = {
|
||||
{"[<5]S", "2B", false},
|
||||
{"[>A7]S", "FS", false},
|
||||
{"[>A7]S", "A6S", false},
|
||||
{"G", "0", false},
|
||||
{"0-FFFF", "G", false},
|
||||
{"", "", true}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user