diff -Nru pcre3-8.31/debian/changelog pcre3-8.31/debian/changelog --- pcre3-8.31/debian/changelog 2013-12-03 22:37:05.000000000 +0900 +++ pcre3-8.31/debian/changelog 2015-07-21 19:06:07.000000000 +0900 @@ -1,3 +1,28 @@ +pcre3 (1:8.31-2ubuntu3) trusty; urgency=low + + * SECURITY UPDATE: Heap buffer overflow in pcregrep + - debian/patches/cve-2014-8964.patch: add ecode check. + Based on upstream + - CVE-2014-8964 + + * SECURITY UPDATE: PCRE Library Heap Overflow Vulnerability + - debian/patches/cve-2015-2325.patch: change some variables + pointer to integer, and related contents. Based on upstream patch + - CVE-2015-2325 + + * SECURITY UPDATE: PCRE Library Heap overflow Vulnerability II + - debian/patches/cve-2015-2326.patch: take save_hwm_offset out + from adjust_recurse. Based on upstream patch + - CVE-2015-2326 + + * SECURITY UPDATE: PCRE Library Heap Overflow Vulnerability in + find_fixedlength() + - debian/patches/cve-2015-5073.patch: add compare errorcode + missing test code. Based on upstream patch + - CVE-2015-5073 + + -- Seyeong Kim Sun, 05 Jul 2015 20:19:47 -0700 + pcre3 (1:8.31-2ubuntu2) trusty; urgency=low * Don't patch the soname in the generated configure file, but in diff -Nru pcre3-8.31/debian/patches/cve-2014-8964.patch pcre3-8.31/debian/patches/cve-2014-8964.patch --- pcre3-8.31/debian/patches/cve-2014-8964.patch 1970-01-01 09:00:00.000000000 +0900 +++ pcre3-8.31/debian/patches/cve-2014-8964.patch 2015-07-22 11:17:44.000000000 +0900 @@ -0,0 +1,61 @@ +Description: heap buffer overflow + Heap buffer overflow if an assertion with a zero minimum repeat is used as + the condition in a conditional group. +Origin: upstream http://bugs.exim.org/show_bug.cgi?id=1546 +Bug: http://bugs.exim.org/show_bug.cgi?id=1546 +Author: Petr Písař +Origin: vendor, https://git.centos.org/blob/rpms!pcre.git/b8498e2bb79b98480ea064df33df2fa391d5259e/SOURCES!pcre-8.32-Fix-zero-repeat-assertion-condition-bug.patch +Bug-Redhat: https://bugzilla.redhat.com/show_bug.cgi?id=1166147 +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/pcre3/+bug/1396768 +Last-Update: 2014-11-19 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: pcre3-8.31/pcre_exec.c +=================================================================== +--- pcre3-8.31.orig/pcre_exec.c ++++ pcre3-8.31/pcre_exec.c +@@ -1441,7 +1441,9 @@ for (;;) + if (md->end_offset_top > offset_top) + offset_top = md->end_offset_top; /* Captures may have happened */ + condition = TRUE; +- ecode += 1 + LINK_SIZE + GET(ecode, LINK_SIZE + 2); ++ ecode += 1 + LINK_SIZE; ++ if (*ecode == OP_BRAZERO) ecode++; ++ ecode += GET(ecode, 1); + while (*ecode == OP_ALT) ecode += GET(ecode, 1); + } + +Index: pcre3-8.31/testdata/testinput2 +=================================================================== +--- pcre3-8.31.orig/testdata/testinput2 ++++ pcre3-8.31/testdata/testinput2 +@@ -3769,4 +3769,10 @@ assertion, and therefore fails the entir + /((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/ + ac + ++"((?=(?(?=(?(?=(?(?=())))*)))))" ++ a ++ ++"(?(?=)?==)(((((((((?=)))))))))" ++ a ++ + /-- End of testinput2 --/ +Index: pcre3-8.31/testdata/testoutput2 +=================================================================== +--- pcre3-8.31.orig/testdata/testoutput2 ++++ pcre3-8.31/testdata/testoutput2 +@@ -12361,4 +12361,14 @@ assertion, and therefore fails the entir + ac + 0: ac + ++"((?=(?(?=(?(?=(?(?=())))*)))))" ++ a ++ 0: ++ 1: ++ 2: ++ ++"(?(?=)?==)(((((((((?=)))))))))" ++ a ++No match ++ + /-- End of testinput2 --/ diff -Nru pcre3-8.31/debian/patches/cve-2015-2325.patch pcre3-8.31/debian/patches/cve-2015-2325.patch --- pcre3-8.31/debian/patches/cve-2015-2325.patch 1970-01-01 09:00:00.000000000 +0900 +++ pcre3-8.31/debian/patches/cve-2015-2325.patch 2015-07-21 17:51:13.000000000 +0900 @@ -0,0 +1,324 @@ +ption: PCRE Library Heap Overflow Vulnerability + PCRE library is prone to a heap overflow vulnerability. Due to insufficient + bounds checking inside compile_branch(), the heap memory could be overflowed + via a crafted regular expression. Since PCRE library is widely used, this + vulnerability should affect many applications using it. An attacker may exploit + this issue to execute arbitrary code in the context of the user running the + affected application. +Author: Philip Hazel +Origin: upstream, http://vcs.pcre.org/pcre?view=revision&revision=1495 + http://vcs.pcre.org/pcre?view=revision&revision=1528 +Bug: https://bugs.exim.org/show_bug.cgi?id=1591 +Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2015-2325 +Last-Update: 2015-02-28 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: pcre3-8.31/pcre_compile.c +=================================================================== +--- pcre3-8.31.orig/pcre_compile.c ++++ pcre3-8.31/pcre_compile.c +@@ -2769,14 +2769,14 @@ Arguments: + adjust the amount by which the group is to be moved + utf TRUE in UTF-8 / UTF-16 mode + cd contains pointers to tables etc. +- save_hwm the hwm forward reference pointer at the start of the group ++ save_hwm_offset the hwm forward reference offset at the start of the group + + Returns: nothing + */ + + static void + adjust_recurse(pcre_uchar *group, int adjust, BOOL utf, compile_data *cd, +- pcre_uchar *save_hwm) ++ size_t save_hwm_offset) + { + pcre_uchar *ptr = group; + +@@ -2788,7 +2788,8 @@ while ((ptr = (pcre_uchar *)find_recurse + /* See if this recursion is on the forward reference list. If so, adjust the + reference. */ + +- for (hc = save_hwm; hc < cd->hwm; hc += LINK_SIZE) ++ for (hc = (pcre_uchar *)cd->start_workspace + save_hwm_offset; hc < cd->hwm; ++ hc += LINK_SIZE) + { + offset = GET(hc, 0); + if (cd->start_code + offset == ptr + 1) +@@ -3455,7 +3456,7 @@ const pcre_uchar *tempptr; + const pcre_uchar *nestptr = NULL; + pcre_uchar *previous = NULL; + pcre_uchar *previous_callout = NULL; +-pcre_uchar *save_hwm = NULL; ++size_t save_hwm_offset = 0; + pcre_uint8 classbits[32]; + + /* We can fish out the UTF-8 setting once and for all into a BOOL, but we +@@ -5161,7 +5162,7 @@ for (;; ptr++) + if (repeat_max <= 1) /* Covers 0, 1, and unlimited */ + { + *code = OP_END; +- adjust_recurse(previous, 1, utf, cd, save_hwm); ++ adjust_recurse(previous, 1, utf, cd, save_hwm_offset); + memmove(previous + 1, previous, IN_UCHARS(len)); + code++; + if (repeat_max == 0) +@@ -5185,7 +5186,7 @@ for (;; ptr++) + { + int offset; + *code = OP_END; +- adjust_recurse(previous, 2 + LINK_SIZE, utf, cd, save_hwm); ++ adjust_recurse(previous, 2 + LINK_SIZE, utf, cd, save_hwm_offset); + memmove(previous + 2 + LINK_SIZE, previous, IN_UCHARS(len)); + code += 2 + LINK_SIZE; + *previous++ = OP_BRAZERO + repeat_type; +@@ -5244,26 +5245,25 @@ for (;; ptr++) + for (i = 1; i < repeat_min; i++) + { + pcre_uchar *hc; +- pcre_uchar *this_hwm = cd->hwm; ++ size_t this_hwm_offset = cd->hwm - cd->start_workspace; + memcpy(code, previous, IN_UCHARS(len)); + + while (cd->hwm > cd->start_workspace + cd->workspace_size - +- WORK_SIZE_SAFETY_MARGIN - (this_hwm - save_hwm)) ++ WORK_SIZE_SAFETY_MARGIN - ++ (this_hwm_offset - save_hwm_offset)) + { +- int save_offset = save_hwm - cd->start_workspace; +- int this_offset = this_hwm - cd->start_workspace; + *errorcodeptr = expand_workspace(cd); + if (*errorcodeptr != 0) goto FAILED; +- save_hwm = (pcre_uchar *)cd->start_workspace + save_offset; +- this_hwm = (pcre_uchar *)cd->start_workspace + this_offset; + } + +- for (hc = save_hwm; hc < this_hwm; hc += LINK_SIZE) ++ for (hc = (pcre_uchar *)cd->start_workspace + save_hwm_offset; ++ hc < (pcre_uchar *)cd->start_workspace + this_hwm_offset; ++ hc += LINK_SIZE) + { + PUT(cd->hwm, 0, GET(hc, 0) + len); + cd->hwm += LINK_SIZE; + } +- save_hwm = this_hwm; ++ save_hwm_offset = this_hwm_offset; + code += len; + } + } +@@ -5308,7 +5308,7 @@ for (;; ptr++) + else for (i = repeat_max - 1; i >= 0; i--) + { + pcre_uchar *hc; +- pcre_uchar *this_hwm = cd->hwm; ++ size_t this_hwm_offset = cd->hwm - cd->start_workspace; + + *code++ = OP_BRAZERO + repeat_type; + +@@ -5330,22 +5330,21 @@ for (;; ptr++) + copying them. */ + + while (cd->hwm > cd->start_workspace + cd->workspace_size - +- WORK_SIZE_SAFETY_MARGIN - (this_hwm - save_hwm)) ++ WORK_SIZE_SAFETY_MARGIN - ++ (this_hwm_offset - save_hwm_offset)) + { +- int save_offset = save_hwm - cd->start_workspace; +- int this_offset = this_hwm - cd->start_workspace; + *errorcodeptr = expand_workspace(cd); + if (*errorcodeptr != 0) goto FAILED; +- save_hwm = (pcre_uchar *)cd->start_workspace + save_offset; +- this_hwm = (pcre_uchar *)cd->start_workspace + this_offset; + } + +- for (hc = save_hwm; hc < this_hwm; hc += LINK_SIZE) ++ for (hc = (pcre_uchar *)cd->start_workspace + save_hwm_offset; ++ hc < (pcre_uchar *)cd->start_workspace + this_hwm_offset; ++ hc += LINK_SIZE) + { + PUT(cd->hwm, 0, GET(hc, 0) + len + ((i != 0)? 2+LINK_SIZE : 1)); + cd->hwm += LINK_SIZE; + } +- save_hwm = this_hwm; ++ save_hwm_offset = this_hwm_offset; + code += len; + } + +@@ -5441,7 +5440,7 @@ for (;; ptr++) + { + int nlen = (int)(code - bracode); + *code = OP_END; +- adjust_recurse(bracode, 1 + LINK_SIZE, utf, cd, save_hwm); ++ adjust_recurse(bracode, 1 + LINK_SIZE, utf, cd, save_hwm_offset); + memmove(bracode + 1 + LINK_SIZE, bracode, IN_UCHARS(nlen)); + code += 1 + LINK_SIZE; + nlen += 1 + LINK_SIZE; +@@ -5557,7 +5556,7 @@ for (;; ptr++) + + default: + *code = OP_END; +- adjust_recurse(tempcode, 1 + LINK_SIZE, utf, cd, save_hwm); ++ adjust_recurse(tempcode, 1 + LINK_SIZE, utf, cd, save_hwm_offset); + memmove(tempcode + 1 + LINK_SIZE, tempcode, IN_UCHARS(len)); + code += 1 + LINK_SIZE; + len += 1 + LINK_SIZE; +@@ -5588,7 +5587,7 @@ for (;; ptr++) + newoptions = options; + skipbytes = 0; + bravalue = OP_CBRA; +- save_hwm = cd->hwm; ++ save_hwm_offset = cd->hwm - cd->start_workspace; + reset_bracount = FALSE; + + /* First deal with various "verbs" that can be introduced by '*'. */ +@@ -6744,7 +6743,7 @@ for (;; ptr++) + if (-c == ESC_g) + { + const pcre_uchar *p; +- save_hwm = cd->hwm; /* Normally this is set when '(' is read */ ++ save_hwm_offset = cd->hwm - cd->start_workspace; /* Normally this is set when '(' is read */ + terminator = (*(++ptr) == CHAR_LESS_THAN_SIGN)? + CHAR_GREATER_THAN_SIGN : CHAR_APOSTROPHE; + +@@ -7225,12 +7224,16 @@ for (;;) + + /* If it was a capturing subpattern, check to see if it contained any + recursive back references. If so, we must wrap it in atomic brackets. +- In any event, remove the block from the chain. */ ++ Because we are moving code along, we must ensure that any pending recursive ++ references are updated. In any event, remove the block from the chain. */ + + if (capnumber > 0) + { + if (cd->open_caps->flag) + { ++ *code = OP_END; ++ adjust_recurse(start_bracket, 1 + LINK_SIZE, ++ (options & PCRE_UTF8) != 0, cd, cd->hwm - cd->start_workspace); + memmove(start_bracket + 1 + LINK_SIZE, start_bracket, + IN_UCHARS(code - start_bracket)); + *start_bracket = OP_ONCE; +Index: pcre3-8.31/testdata/testinput11 +=================================================================== +--- pcre3-8.31.orig/testdata/testinput11 ++++ pcre3-8.31/testdata/testinput11 +@@ -132,4 +132,6 @@ is required for these tests. --/ + + /abc(d|e)(*THEN)x(123(*THEN)4|567(b|q)(*THEN)xx)/B + ++/(((a\2)|(a*)\g<-1>))*a?/B ++ + /-- End of testinput11 --/ +Index: pcre3-8.31/testdata/testinput2 +=================================================================== +--- pcre3-8.31.orig/testdata/testinput2 ++++ pcre3-8.31/testdata/testinput2 +@@ -3775,4 +3775,8 @@ assertion, and therefore fails the entir + "(?(?=)?==)(((((((((?=)))))))))" + a + ++/(((a\2)|(a*)\g<-1>))*a?/BZ ++ ++"((?2){0,1999}())?" ++ + /-- End of testinput2 --/ +Index: pcre3-8.31/testdata/testoutput11-16 +=================================================================== +--- pcre3-8.31.orig/testdata/testoutput11-16 ++++ pcre3-8.31/testdata/testoutput11-16 +@@ -710,4 +710,28 @@ Memory allocation (code space): 14 + 62 End + ------------------------------------------------------------------ + ++/(((a\2)|(a*)\g<-1>))*a?/B ++------------------------------------------------------------------ ++ 0 39 Bra ++ 2 Brazero ++ 3 32 SCBra 1 ++ 6 27 Once ++ 8 12 CBra 2 ++ 11 7 CBra 3 ++ 14 a ++ 16 \2 ++ 18 7 Ket ++ 20 11 Alt ++ 22 5 CBra 4 ++ 25 a* ++ 27 5 Ket ++ 29 22 Recurse ++ 31 23 Ket ++ 33 27 Ket ++ 35 32 KetRmax ++ 37 a?+ ++ 39 39 Ket ++ 41 End ++------------------------------------------------------------------ ++ + /-- End of testinput11 --/ +Index: pcre3-8.31/testdata/testoutput11-8 +=================================================================== +--- pcre3-8.31.orig/testdata/testoutput11-8 ++++ pcre3-8.31/testdata/testoutput11-8 +@@ -710,4 +710,28 @@ Memory allocation (code space): 10 + 76 End + ------------------------------------------------------------------ + ++/(((a\2)|(a*)\g<-1>))*a?/B ++------------------------------------------------------------------ ++ 0 57 Bra ++ 3 Brazero ++ 4 48 SCBra 1 ++ 9 40 Once ++ 12 18 CBra 2 ++ 17 10 CBra 3 ++ 22 a ++ 24 \2 ++ 27 10 Ket ++ 30 16 Alt ++ 33 7 CBra 4 ++ 38 a* ++ 40 7 Ket ++ 43 33 Recurse ++ 46 34 Ket ++ 49 40 Ket ++ 52 48 KetRmax ++ 55 a?+ ++ 57 57 Ket ++ 60 End ++------------------------------------------------------------------ ++ + /-- End of testinput11 --/ +Index: pcre3-8.31/testdata/testoutput2 +=================================================================== +--- pcre3-8.31.orig/testdata/testoutput2 ++++ pcre3-8.31/testdata/testoutput2 +@@ -12371,4 +12371,30 @@ assertion, and therefore fails the entir + a + No match + ++/(((a\2)|(a*)\g<-1>))*a?/BZ ++------------------------------------------------------------------ ++ Bra ++ Brazero ++ SCBra 1 ++ Once ++ CBra 2 ++ CBra 3 ++ a ++ \2 ++ Ket ++ Alt ++ CBra 4 ++ a* ++ Ket ++ Recurse ++ Ket ++ Ket ++ KetRmax ++ a?+ ++ Ket ++ End ++------------------------------------------------------------------ ++ ++"((?2){0,1999}())?" ++ + /-- End of testinput2 --/ diff -Nru pcre3-8.31/debian/patches/cve-2015-2326.patch pcre3-8.31/debian/patches/cve-2015-2326.patch --- pcre3-8.31/debian/patches/cve-2015-2326.patch 1970-01-01 09:00:00.000000000 +0900 +++ pcre3-8.31/debian/patches/cve-2015-2326.patch 2015-07-21 18:06:00.000000000 +0900 @@ -0,0 +1,137 @@ +Description: PCRE Library Heap overflow Vulnerability II + PCRE library is prone to a vulnerability which leads to Heap overflow. Without + enough bound checking inside pcre_compile2(), the heap memory could be + overflowed via a crafted regular expression. Since PCRE library is widely used, + this vulnerability should affect many applications. An attacker may exploit + this issue to execute arbitrary code in the context of the user running the + affected application +Author: Philip Hazel +Origin: upstream, http://vcs.pcre.org/pcre?view=revision&revision=1529 +Bug: http://bugs.exim.org/show_bug.cgi?id=1592 +Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2015-2326 +Last-Update: 2015-03-02 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: pcre3-8.31/pcre_compile.c +=================================================================== +--- pcre3-8.31.orig/pcre_compile.c ++++ pcre3-8.31/pcre_compile.c +@@ -7040,12 +7040,15 @@ int length; + int orig_bracount; + int max_bracount; + branch_chain bc; ++size_t save_hwm_offset; + + bc.outer = bcptr; + bc.current_branch = code; + + firstchar = reqchar = REQ_UNSET; + ++save_hwm_offset = cd->hwm - cd->start_workspace; ++ + /* Accumulate the length for use in the pre-compile phase. Start with the + length of the BRA and KET and any extra bytes that are required at the + beginning. We accumulate in a local variable to save frequent testing of +@@ -7233,7 +7236,7 @@ for (;;) + { + *code = OP_END; + adjust_recurse(start_bracket, 1 + LINK_SIZE, +- (options & PCRE_UTF8) != 0, cd, cd->hwm - cd->start_workspace); ++ (options & PCRE_UTF8) != 0, cd, save_hwm_offset); + memmove(start_bracket + 1 + LINK_SIZE, start_bracket, + IN_UCHARS(code - start_bracket)); + *start_bracket = OP_ONCE; +Index: pcre3-8.31/testdata/testinput11 +=================================================================== +--- pcre3-8.31.orig/testdata/testinput11 ++++ pcre3-8.31/testdata/testinput11 +@@ -134,4 +134,6 @@ is required for these tests. --/ + + /(((a\2)|(a*)\g<-1>))*a?/B + ++/((?+1)(\1))/B ++ + /-- End of testinput11 --/ +Index: pcre3-8.31/testdata/testinput2 +=================================================================== +--- pcre3-8.31.orig/testdata/testinput2 ++++ pcre3-8.31/testdata/testinput2 +@@ -3779,4 +3779,6 @@ assertion, and therefore fails the entir + + "((?2){0,1999}())?" + ++/((?+1)(\1))/BZ ++ + /-- End of testinput2 --/ +Index: pcre3-8.31/testdata/testoutput11-16 +=================================================================== +--- pcre3-8.31.orig/testdata/testoutput11-16 ++++ pcre3-8.31/testdata/testoutput11-16 +@@ -734,4 +734,19 @@ Memory allocation (code space): 14 + 41 End + ------------------------------------------------------------------ + ++/((?+1)(\1))/B ++------------------------------------------------------------------ ++ 0 20 Bra ++ 2 16 Once ++ 4 12 CBra 1 ++ 7 9 Recurse ++ 9 5 CBra 2 ++ 12 \1 ++ 14 5 Ket ++ 16 12 Ket ++ 18 16 Ket ++ 20 20 Ket ++ 22 End ++------------------------------------------------------------------ ++ + /-- End of testinput11 --/ +Index: pcre3-8.31/testdata/testoutput11-8 +=================================================================== +--- pcre3-8.31.orig/testdata/testoutput11-8 ++++ pcre3-8.31/testdata/testoutput11-8 +@@ -734,4 +734,19 @@ Memory allocation (code space): 10 + 60 End + ------------------------------------------------------------------ + ++/((?+1)(\1))/B ++------------------------------------------------------------------ ++ 0 31 Bra ++ 3 25 Once ++ 6 19 CBra 1 ++ 11 14 Recurse ++ 14 8 CBra 2 ++ 19 \1 ++ 22 8 Ket ++ 25 19 Ket ++ 28 25 Ket ++ 31 31 Ket ++ 34 End ++------------------------------------------------------------------ ++ + /-- End of testinput11 --/ +Index: pcre3-8.31/testdata/testoutput2 +=================================================================== +--- pcre3-8.31.orig/testdata/testoutput2 ++++ pcre3-8.31/testdata/testoutput2 +@@ -12397,4 +12397,19 @@ No match + + "((?2){0,1999}())?" + ++/((?+1)(\1))/BZ ++------------------------------------------------------------------ ++ Bra ++ Once ++ CBra 1 ++ Recurse ++ CBra 2 ++ \1 ++ Ket ++ Ket ++ Ket ++ Ket ++ End ++------------------------------------------------------------------ ++ + /-- End of testinput2 --/ diff -Nru pcre3-8.31/debian/patches/cve-2015-5073.patch pcre3-8.31/debian/patches/cve-2015-5073.patch --- pcre3-8.31/debian/patches/cve-2015-5073.patch 1970-01-01 09:00:00.000000000 +0900 +++ pcre3-8.31/debian/patches/cve-2015-5073.patch 2015-07-21 19:01:20.000000000 +0900 @@ -0,0 +1,51 @@ +Description: PCRE Library Heap Overflow Vulnerability in find_fixedlength() + PCRE library is prone to a vulnerability which leads to Heap Overflow. + During subpattern calculation of a malformed regular expression, an offset + that is used as an array index is fully controlled and can be large enough + so that unexpected heap memory regions are accessed. + One could at least exploit this issue to read objects nearby of the affected + application's memory. + Such information disclosure may also be used to bypass memory protection method such as ASLR. +Author: Philip Hazel +Origin: upstream, http://vcs.pcre.org/pcre?view=revision&revision=1571 +Bug: https://bugs.exim.org/show_bug.cgi?id=1651 +Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2015-5073 +Last-Update: 2015-06-23 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: pcre3-8.31/pcre_compile.c +=================================================================== +--- pcre3-8.31.orig/pcre_compile.c ++++ pcre3-8.31/pcre_compile.c +@@ -8018,7 +8018,7 @@ OP_RECURSE that are not fixed length get + exceptional ones forgo this. We scan the pattern to check that they are fixed + length, and set their lengths. */ + +-if (cd->check_lookbehind) ++if (errorcode == 0 && cd->check_lookbehind) + { + pcre_uchar *cc = (pcre_uchar *)codestart; + +Index: pcre3-8.31/testdata/testinput2 +=================================================================== +--- pcre3-8.31.orig/testdata/testinput2 ++++ pcre3-8.31/testdata/testinput2 +@@ -3781,4 +3781,6 @@ assertion, and therefore fails the entir + + /((?+1)(\1))/BZ + ++/(?=di(?<=(?1))|(?=(.))))/ ++ + /-- End of testinput2 --/ +Index: pcre3-8.31/testdata/testoutput2 +=================================================================== +--- pcre3-8.31.orig/testdata/testoutput2 ++++ pcre3-8.31/testdata/testoutput2 +@@ -12412,4 +12412,7 @@ No match + End + ------------------------------------------------------------------ + ++/(?=di(?<=(?1))|(?=(.))))/ ++Failed: unmatched parentheses at offset 23 ++ + /-- End of testinput2 --/ diff -Nru pcre3-8.31/debian/patches/series pcre3-8.31/debian/patches/series --- pcre3-8.31/debian/patches/series 2012-09-14 03:51:33.000000000 +0900 +++ pcre3-8.31/debian/patches/series 2015-07-21 18:35:53.000000000 +0900 @@ -4,3 +4,7 @@ pcregrep.1-patch soname.patch bug1287 +cve-2014-8964.patch +cve-2015-2325.patch +cve-2015-2326.patch +cve-2015-5073.patch