File 0003-lib-regex-Limit-number-of-capture-groups-correctly.patch of Package dovecot24

From 7619375c605708414664e351bbab0f084e687e8f Mon Sep 17 00:00:00 2001
From: Aki Tuomi <aki.tuomi@open-xchange.com>
Date: Mon, 22 Dec 2025 22:01:18 +0200
Subject: [PATCH 3/3] lib-regex: Limit number of capture groups correctly

We create at maximum max_capture_groups match groups.
---
 src/lib-regex/regex.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/lib-regex/regex.c b/src/lib-regex/regex.c
index 5ccf9d54be..d48b48adf3 100644
--- a/src/lib-regex/regex.c
+++ b/src/lib-regex/regex.c
@@ -336,12 +336,9 @@ int dregex_code_match_groups(struct dregex_code *code, const char *subject,
 
 	T_BEGIN {
 		pcre2_match_data *mdata =
-			pcre2_match_data_create_from_pattern(code->pat, code->gctx);
+			pcre2_match_data_create(code->max_capture_groups, code->gctx);
 		ret = dregex_code_match_int(code, subject, mdata, error_r);
-		/* Avoid extracting way too many capture groups */
-		if (ret > (int)code->max_capture_groups + 1)
-			ret = handle_error(PCRE2_ERROR_TOO_MANY_CAPTURES, error_r);
-		else if (ret > 1) {
+		if (ret > 1) {
 			bool skip_empty = HAS_ALL_BITS(code->flags, DREGEX_NO_EMPTY_SUB);
 			/* ret is number of groups */
 			extract_matches((uint32_t)ret, mdata, skip_empty, groups_r);
-- 
2.52.0

openSUSE Build Service is sponsored by