From 3ad57f116631029263cdbb324a20076006a94d4c Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Thu, 3 Feb 2022 11:25:31 +0100 Subject: lib: fix infinite loop on empty regexp matches in uc_match() The regular expression `/()/` will match the empty string, causing the match loop to never advance. Add extra logic to deal with this case. Signed-off-by: Jo-Philipp Wich --- lib.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'lib.c') diff --git a/lib.c b/lib.c index 6235470..ab04b32 100644 --- a/lib.c +++ b/lib.c @@ -1804,7 +1804,13 @@ uc_match(uc_vm_t *vm, size_t nargs) ucv_array_push(rv, m); - p += pmatch[0].rm_eo; + if (pmatch[0].rm_so != pmatch[0].rm_eo) + p += pmatch[0].rm_eo; + else if (*p) + p++; + else + break; + eflags |= REG_NOTBOL; } else { -- cgit v1.2.3