diff --git a/pcre2-10.36-Fix-K-within-recursion-bug-in-interpreter.patch b/pcre2-10.36-Fix-K-within-recursion-bug-in-interpreter.patch deleted file mode 100644 index d8da57a..0000000 --- a/pcre2-10.36-Fix-K-within-recursion-bug-in-interpreter.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 1ef05f50d623582e8493ab49cfe0c243eed175c9 Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Thu, 18 Feb 2021 09:46:08 +0000 -Subject: [PATCH] Fix \K within recursion bug in interpreter. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@1301 6239d852-aaf2-0410-a92c-79f79f948069 -Petr PísaÅ™: Ported to 10.36. ---- - src/pcre2_match.c | 4 +++- - testdata/testinput1 | 3 +++ - testdata/testoutput1 | 4 ++++ - -diff --git a/src/pcre2_match.c b/src/pcre2_match.c -index e3f78c2..7d9cad0 100644 ---- a/src/pcre2_match.c -+++ b/src/pcre2_match.c -@@ -818,10 +818,12 @@ fprintf(stderr, "++ op=%d\n", *Fecode); - - /* N is now the frame of the recursion; the previous frame is at the - OP_RECURSE position. Go back there, copying the current subject position -- and mark, and move on past the OP_RECURSE. */ -+ and mark, and the start_match position (\K might have changed it), and -+ then move on past the OP_RECURSE. */ - - P->eptr = Feptr; - P->mark = Fmark; -+ P->start_match = Fstart_match; - F = P; - Fecode += 1 + LINK_SIZE; - continue; -diff --git a/testdata/testinput1 b/testdata/testinput1 -index bb4ddb7..4cf1126 100644 ---- a/testdata/testinput1 -+++ b/testdata/testinput1 -@@ -6429,4 +6429,7 @@ ef) x/x,mark - /a{65536/ - >a{65536< - -+/a\K.(?0)*/ -+ abac -+ - # End of testinput1 -diff --git a/testdata/testoutput1 b/testdata/testoutput1 -index 05b310b..8d4c108 100644 ---- a/testdata/testoutput1 -+++ b/testdata/testoutput1 -@@ -10188,4 +10188,8 @@ No match - >a{65536< - 0: a{65536 - -+/a\K.(?0)*/ -+ abac -+ 0: c -+ - # End of testinput1 --- -2.26.2 - diff --git a/pcre2-10.36-Fix-some-numerical-checking-bugs-Bugzilla-2690.patch b/pcre2-10.36-Fix-some-numerical-checking-bugs-Bugzilla-2690.patch deleted file mode 100644 index 0f57b3a..0000000 --- a/pcre2-10.36-Fix-some-numerical-checking-bugs-Bugzilla-2690.patch +++ /dev/null @@ -1,258 +0,0 @@ -From ca896b83b391bf6de7a7bf6e76da3bb02eb7001f Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Mon, 1 Feb 2021 17:56:12 +0000 -Subject: [PATCH] Fix some numerical checking bugs, Bugzilla 2690. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@1295 6239d852-aaf2-0410-a92c-79f79f948069 -Signed-off-by: Petr PísaÅ™ ---- - src/pcre2_compile.c | 52 +++++++++++++++++++++++++++------------- - testdata/testinput1 | 9 +++++++ - testdata/testinput11 | 3 +++ - testdata/testinput2 | 2 -- - testdata/testinput9 | 3 +++ - testdata/testoutput1 | 12 ++++++++++ - testdata/testoutput11-16 | 4 ++++ - testdata/testoutput11-32 | 4 ++++ - testdata/testoutput2 | 3 --- - testdata/testoutput9 | 4 ++++ - -diff --git a/src/pcre2_compile.c b/src/pcre2_compile.c -index e811f12..4bd5be0 100644 ---- a/src/pcre2_compile.c -+++ b/src/pcre2_compile.c -@@ -1398,32 +1398,47 @@ static BOOL - read_repeat_counts(PCRE2_SPTR *ptrptr, PCRE2_SPTR ptrend, uint32_t *minp, - uint32_t *maxp, int *errorcodeptr) - { --PCRE2_SPTR p = *ptrptr; -+PCRE2_SPTR p; - BOOL yield = FALSE; -+BOOL had_comma = FALSE; - int32_t min = 0; - int32_t max = REPEAT_UNLIMITED; /* This value is larger than MAX_REPEAT_COUNT */ - --/* NB read_number() initializes the error code to zero. The only error is for a --number that is too big. */ -+/* Check the syntax */ - -+*errorcodeptr = 0; -+for (p = *ptrptr;; p++) -+ { -+ uint32_t c; -+ if (p >= ptrend) return FALSE; -+ c = *p; -+ if (IS_DIGIT(c)) continue; -+ if (c == CHAR_RIGHT_CURLY_BRACKET) break; -+ if (c == CHAR_COMMA) -+ { -+ if (had_comma) return FALSE; -+ had_comma = TRUE; -+ } -+ else return FALSE; -+ } -+ -+/* The only error from read_number() is for a number that is too big. */ -+ -+p = *ptrptr; - if (!read_number(&p, ptrend, -1, MAX_REPEAT_COUNT, ERR5, &min, errorcodeptr)) - goto EXIT; - --if (p >= ptrend) goto EXIT; -- - if (*p == CHAR_RIGHT_CURLY_BRACKET) - { - p++; - max = min; - } -- - else - { -- if (*p++ != CHAR_COMMA || p >= ptrend) goto EXIT; -- if (*p != CHAR_RIGHT_CURLY_BRACKET) -+ if (*(++p) != CHAR_RIGHT_CURLY_BRACKET) - { - if (!read_number(&p, ptrend, -1, MAX_REPEAT_COUNT, ERR5, &max, -- errorcodeptr) || p >= ptrend || *p != CHAR_RIGHT_CURLY_BRACKET) -+ errorcodeptr)) - goto EXIT; - if (max < min) - { -@@ -1438,11 +1453,10 @@ yield = TRUE; - if (minp != NULL) *minp = (uint32_t)min; - if (maxp != NULL) *maxp = (uint32_t)max; - --/* Update the pattern pointer on success, or after an error, but not when --the result is "not a repeat quantifier". */ -+/* Update the pattern pointer */ - - EXIT: --if (yield || *errorcodeptr != 0) *ptrptr = p; -+*ptrptr = p; - return yield; - } - -@@ -1776,19 +1790,23 @@ else - { - oldptr = ptr; - ptr--; /* Back to the digit */ -- if (!read_number(&ptr, ptrend, -1, INT_MAX/10 - 1, ERR61, &s, -- errorcodeptr)) -- break; - -- /* \1 to \9 are always back references. \8x and \9x are too; \1x to \7x -+ /* As we know we are at a digit, the only possible error from -+ read_number() is a number that is too large to be a group number. In this -+ case we fall through handle this as not a group reference. If we have -+ read a small enough number, check for a back reference. -+ -+ \1 to \9 are always back references. \8x and \9x are too; \1x to \7x - are octal escapes if there are not that many previous captures. */ - -- if (s < 10 || oldptr[-1] >= CHAR_8 || s <= (int)cb->bracount) -+ if (read_number(&ptr, ptrend, -1, INT_MAX/10 - 1, 0, &s, errorcodeptr) && -+ (s < 10 || oldptr[-1] >= CHAR_8 || s <= (int)cb->bracount)) - { - if (s > (int)MAX_GROUP_NUMBER) *errorcodeptr = ERR61; - else escape = -s; /* Indicates a back reference */ - break; - } -+ - ptr = oldptr; /* Put the pointer back and fall through */ - } - -diff --git a/testdata/testinput1 b/testdata/testinput1 -index d4e42ba..bb4ddb7 100644 ---- a/testdata/testinput1 -+++ b/testdata/testinput1 -@@ -6420,4 +6420,13 @@ ef) x/x,mark - /(?(DEFINE)(?bar))(?\x{8c}748364< -+ -+/a{65536/ -+ >a{65536< -+ - # End of testinput1 -diff --git a/testdata/testinput11 b/testdata/testinput11 -index 2d267d6..2bc8a25 100644 ---- a/testdata/testinput11 -+++ b/testdata/testinput11 -@@ -368,4 +368,7 @@ - abÿAz - ab\x{80000041}z - -+/(?i:A{1,}\6666666666)/ -+ A\x{1b6}6666666 -+ - # End of testinput11 -diff --git a/testdata/testinput2 b/testdata/testinput2 -index 3f9dd6d..87e3394 100644 ---- a/testdata/testinput2 -+++ b/testdata/testinput2 -@@ -2189,8 +2189,6 @@ - - /a(*MARK)b/ - --/(?i:A{1,}\6666666666)/ -- - /\g6666666666/ - - /[\g6666666666]/B -diff --git a/testdata/testinput9 b/testdata/testinput9 -index 7be4b15..4eb228a 100644 ---- a/testdata/testinput9 -+++ b/testdata/testinput9 -@@ -260,4 +260,7 @@ - - /(*:*++++++++++++''''''''''''''''''''+''+++'+++x+++++++++++++++++++++++++++++++++++(++++++++++++++++++++:++++++%++:''''''''''''''''''''''''+++++++++++++++++++++++++++++++++++++++++++++++++++++-++++++++k+++++++''''+++'+++++++++++++++++++++++''''++++++++++++':Æ¿)/ - -+/(?i:A{1,}\6666666666)/ -+ A\x{1b6}6666666 -+ - # End of testinput9 -diff --git a/testdata/testoutput1 b/testdata/testoutput1 -index 16c91d2..05b310b 100644 ---- a/testdata/testoutput1 -+++ b/testdata/testoutput1 -@@ -10176,4 +10176,16 @@ No match - word - 0: word - -+/a{1,2,3}b/ -+ a{1,2,3}b -+ 0: a{1,2,3}b -+ -+/\214748364/ -+ >\x{8c}748364< -+ 0: \x8c748364 -+ -+/a{65536/ -+ >a{65536< -+ 0: a{65536 -+ - # End of testinput1 -diff --git a/testdata/testoutput11-16 b/testdata/testoutput11-16 -index 78bf7fb..8768785 100644 ---- a/testdata/testoutput11-16 -+++ b/testdata/testoutput11-16 -@@ -661,4 +661,8 @@ Subject length lower bound = 1 - abÿAz - ab\x{80000041}z - -+/(?i:A{1,}\6666666666)/ -+ A\x{1b6}6666666 -+ 0: A\x{1b6}6666666 -+ - # End of testinput11 -diff --git a/testdata/testoutput11-32 b/testdata/testoutput11-32 -index 4b00384..2c95f61 100644 ---- a/testdata/testoutput11-32 -+++ b/testdata/testoutput11-32 -@@ -667,4 +667,8 @@ Subject length lower bound = 1 - ab\x{80000041}z - 0: ab\x{80000041}z - -+/(?i:A{1,}\6666666666)/ -+ A\x{1b6}6666666 -+ 0: A\x{1b6}6666666 -+ - # End of testinput11 -diff --git a/testdata/testoutput2 b/testdata/testoutput2 -index dc17011..4d8f65d 100644 ---- a/testdata/testoutput2 -+++ b/testdata/testoutput2 -@@ -8374,9 +8374,6 @@ No match - /a(*MARK)b/ - Failed: error 166 at offset 7: (*MARK) must have an argument - --/(?i:A{1,}\6666666666)/ --Failed: error 161 at offset 19: subpattern number is too big -- - /\g6666666666/ - Failed: error 161 at offset 7: subpattern number is too big - -diff --git a/testdata/testoutput9 b/testdata/testoutput9 -index f98f276..1ec4317 100644 ---- a/testdata/testoutput9 -+++ b/testdata/testoutput9 -@@ -367,4 +367,8 @@ Failed: error 134 at offset 14: character code point value in \x{} or \o{} is to - /(*:*++++++++++++''''''''''''''''''''+''+++'+++x+++++++++++++++++++++++++++++++++++(++++++++++++++++++++:++++++%++:''''''''''''''''''''''''+++++++++++++++++++++++++++++++++++++++++++++++++++++-++++++++k+++++++''''+++'+++++++++++++++++++++++''''++++++++++++':Æ¿)/ - Failed: error 176 at offset 259: name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN) - -+/(?i:A{1,}\6666666666)/ -+Failed: error 151 at offset 13: octal value is greater than \377 in 8-bit non-UTF-8 mode -+ A\x{1b6}6666666 -+ - # End of testinput9 --- -2.26.2 - diff --git a/pcre2-10.36-Get-rid-of-gcc-fanalyzer-error-though-it-was-probabl.patch b/pcre2-10.36-Get-rid-of-gcc-fanalyzer-error-though-it-was-probabl.patch deleted file mode 100644 index b5b33c6..0000000 --- a/pcre2-10.36-Get-rid-of-gcc-fanalyzer-error-though-it-was-probabl.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 32e83fc2d59413d13039cc31db1558d9c0e3b874 Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Thu, 14 Jan 2021 16:56:44 +0000 -Subject: [PATCH] Get rid of gcc -fanalyzer error (though it was probably a - false positive). -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@1293 6239d852-aaf2-0410-a92c-79f79f948069 -Signed-off-by: Petr PísaÅ™ -Petr Pisar: Ported to 10.36. ---- - src/pcre2_auto_possess.c | 13 +++++++++---- - -diff --git a/src/pcre2_auto_possess.c b/src/pcre2_auto_possess.c -index c64cf85..66064ed 100644 ---- a/src/pcre2_auto_possess.c -+++ b/src/pcre2_auto_possess.c -@@ -7,7 +7,7 @@ and semantics are as close as possible to those of the Perl 5 language. - - Written by Philip Hazel - Original API code Copyright (c) 1997-2012 University of Cambridge -- New API code Copyright (c) 2016-2020 University of Cambridge -+ New API code Copyright (c) 2016-2021 University of Cambridge - - ----------------------------------------------------------------------------- - Redistribution and use in source and binary forms, with or without -@@ -490,6 +490,7 @@ switch(c) - list[2] = (uint32_t)(end - code); - return end; - } -+ - return NULL; /* Opcode not accepted */ - } - -@@ -1186,12 +1187,16 @@ for (;;) - c = *repeat_opcode; - if (c >= OP_CRSTAR && c <= OP_CRMINRANGE) - { -- /* end must not be NULL. */ -+ /* The return from get_chr_property_list() will never be NULL when -+ *code (aka c) is one of the three class opcodes. However, gcc with -+ -fanalyzer notes that a NULL return is possible, and grumbles. Hence we -+ put in a check. */ -+ - end = get_chr_property_list(code, utf, ucp, cb->fcc, list); -- - list[1] = (c & 1) == 0; - -- if (compare_opcodes(end, utf, ucp, cb, list, end, &rec_limit)) -+ if (end != NULL && -+ compare_opcodes(end, utf, ucp, cb, list, end, &rec_limit)) - { - switch (c) - { --- -2.26.2 - diff --git a/pcre2-10.36-Restore-single-character-repetition-optimization-in-.patch b/pcre2-10.36-Restore-single-character-repetition-optimization-in-.patch deleted file mode 100644 index acca1ec..0000000 --- a/pcre2-10.36-Restore-single-character-repetition-optimization-in-.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 29dd457d21ec0350bd9d55f33c0e53ca285d52c2 Mon Sep 17 00:00:00 2001 -From: zherczeg -Date: Fri, 19 Feb 2021 09:20:37 +0000 -Subject: [PATCH] Restore single character repetition optimization in JIT. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@1302 6239d852-aaf2-0410-a92c-79f79f948069 -Petr PísaÅ™: Ported to 10.36. ---- - src/pcre2_jit_compile.c | 2 +- - -diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c -index 1977d28..3281464 100644 ---- a/src/pcre2_jit_compile.c -+++ b/src/pcre2_jit_compile.c -@@ -1226,7 +1226,7 @@ while (cc < ccend) - return TRUE; - } - --#define EARLY_FAIL_ENHANCE_MAX (1 + 1) -+#define EARLY_FAIL_ENHANCE_MAX (1 + 3) - - /* - start: --- -2.26.2 - diff --git a/pcre2-10.37-Fix-invalid-single-character-repetition-issues-in-JI.patch b/pcre2-10.37-Fix-invalid-single-character-repetition-issues-in-JI.patch deleted file mode 100644 index f84d577..0000000 --- a/pcre2-10.37-Fix-invalid-single-character-repetition-issues-in-JI.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 68b518ae703afcc672071e2bf65e4600bb2f2bfb Mon Sep 17 00:00:00 2001 -From: zherczeg -Date: Fri, 4 Jun 2021 12:55:49 +0000 -Subject: [PATCH] Fix invalid single character repetition issues in JIT. - -git-svn-id: svn://vcs.pcre.org/pcre2/code/trunk@1315 6239d852-aaf2-0410-a92c-79f79f948069 ---- - src/pcre2_jit_compile.c | 10 ++++++---- - src/pcre2_jit_test.c | 1 + - -diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c -index ae0d9a9..a3f7ebe 100644 ---- a/src/pcre2_jit_compile.c -+++ b/src/pcre2_jit_compile.c -@@ -1236,15 +1236,16 @@ start: - - return: current number of iterators enhanced with fast fail - */ --static int detect_early_fail(compiler_common *common, PCRE2_SPTR cc, int *private_data_start, sljit_s32 depth, int start) -+static int detect_early_fail(compiler_common *common, PCRE2_SPTR cc, int *private_data_start, -+ sljit_s32 depth, int start, BOOL fast_forward_allowed) - { - PCRE2_SPTR begin = cc; - PCRE2_SPTR next_alt; - PCRE2_SPTR end; - PCRE2_SPTR accelerated_start; -+BOOL prev_fast_forward_allowed; - int result = 0; - int count; --BOOL fast_forward_allowed = TRUE; - - SLJIT_ASSERT(*cc == OP_ONCE || *cc == OP_BRA || *cc == OP_CBRA); - SLJIT_ASSERT(*cc != OP_CBRA || common->optimized_cbracket[GET2(cc, 1 + LINK_SIZE)] != 0); -@@ -1476,6 +1477,7 @@ do - case OP_CBRA: - end = cc + GET(cc, 1); - -+ prev_fast_forward_allowed = fast_forward_allowed; - fast_forward_allowed = FALSE; - if (depth >= 4) - break; -@@ -1484,7 +1486,7 @@ do - if (*end != OP_KET || (*cc == OP_CBRA && common->optimized_cbracket[GET2(cc, 1 + LINK_SIZE)] == 0)) - break; - -- count = detect_early_fail(common, cc, private_data_start, depth + 1, count); -+ count = detect_early_fail(common, cc, private_data_start, depth + 1, count, prev_fast_forward_allowed); - - if (PRIVATE_DATA(cc) != 0) - common->private_data_ptrs[begin - common->start] = 1; -@@ -13657,7 +13659,7 @@ memset(common->private_data_ptrs, 0, total_length * sizeof(sljit_s32)); - private_data_size = common->cbra_ptr + (re->top_bracket + 1) * sizeof(sljit_sw); - - if ((re->overall_options & PCRE2_ANCHORED) == 0 && (re->overall_options & PCRE2_NO_START_OPTIMIZE) == 0 && !common->has_skip_in_assert_back) -- detect_early_fail(common, common->start, &private_data_size, 0, 0); -+ detect_early_fail(common, common->start, &private_data_size, 0, 0, TRUE); - - set_private_data_ptrs(common, &private_data_size, ccend); - -diff --git a/src/pcre2_jit_test.c b/src/pcre2_jit_test.c -index d935887..f748016 100644 ---- a/src/pcre2_jit_test.c -+++ b/src/pcre2_jit_test.c -@@ -351,6 +351,7 @@ static struct regression_test_case regression_test_cases[] = { - { MU, A, 0, 0, ".[ab]*a", "xxa" }, - { MU, A, 0, 0, ".[ab]?.", "xx" }, - { MU, A, 0, 0, "_[ab]+_*a", "_aa" }, -+ { MU, A, 0, 0, "#(A+)#\\d+", "#A#A#0" }, - - /* Bracket repeats with limit. */ - { MU, A, 0, 0, "(?:(ab){2}){5}M", "abababababababababababM" }, --- -2.31.1 -