diff --git a/osscan.cc b/osscan.cc index 241ad17d8..05555101a 100644 --- a/osscan.cc +++ b/osscan.cc @@ -371,7 +371,7 @@ bool expr_match(const char *val, size_t vlen, const char *expr, size_t explen, b } goto next_expr; } else { - q1 = strchr_p(p, p_end, '-'); + q1 = strchr_p(p, q ? q : p_end, '-'); if (q1 != NULL) { size_t sublen1 = q1 - p; if ((vlen > sublen1) diff --git a/tests/expr_match_test.cc b/tests/expr_match_test.cc index 53e2d8d0d..2cc11d549 100644 --- a/tests/expr_match_test.cc +++ b/tests/expr_match_test.cc @@ -152,6 +152,7 @@ const struct expr_test tests[] = { {"M[500|5B4]ST11NW[7-9]", "M5B4ST11NW79", false}, {"M[500|5B4]ST11NW[7-9]", "M500ST11NWA", false}, {"M[500|5B4]ST11NW[7-9]", "M5B40ST11NW9", false}, + {"A|20-22", "A", true}, {"", "", true} };