Index: branches/2016Q1/devel/pcre/Makefile =================================================================== --- branches/2016Q1/devel/pcre/Makefile (revision 411532) +++ branches/2016Q1/devel/pcre/Makefile (revision 411533) @@ -1,115 +1,115 @@ # Created by: dom # $FreeBSD$ PORTNAME= pcre -PORTVERSION= 8.37 -PORTREVISION= 4 +PORTVERSION= 8.38 +PORTREVISION= 0 CATEGORIES= devel MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTVERSION} \ ftp://ftp.csx.cam.ac.uk/pub/software/programming/${PORTNAME}/ \ ftp://ftp.fu-berlin.de/unix/misc/${PORTNAME}/ \ ftp://ftp.tin.org/pub/libs/${PORTNAME}/ MAINTAINER= bf@FreeBSD.org COMMENT= Perl Compatible Regular Expressions library LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/LICENCE GNU_CONFIGURE= yes USES= libtool pathfix tar:bzip2 USE_LDCONFIG= yes CONFIGURE_ARGS= --enable-utf --enable-unicode-properties \ --enable-pcre8 --enable-pcre16 --enable-pcre32 INSTALL_TARGET= install-strip OPTIONS_DEFINE= DOCS STACK_RECURSION OPTIONS_DEFAULT= STACK_RECURSION OPTIONS_RADIO= CLI OPTIONS_RADIO_CLI= LIBEDIT READLINE STACK_RECURSION_DESC= Use the stack for recursion during matching LIBEDIT_CONFIGURE_ENABLE= pcretest-libedit LIBEDIT_USES= libedit READLINE_USES= readline READLINE_CONFIGURE_ENABLE= pcretest-libreadline .include .if ${ARCH} != "sparc64" && ${ARCH} != "ia64" && ${ARCH:Mmips64*} == "" CONFIGURE_ARGS+= --enable-jit .else CONFIGURE_ARGS+= --disable-jit .endif .if ${PORT_OPTIONS:MDOCS} PORTDOCS= * .endif # Using the heap rather than the stack for recursion is slower but less # prone to segfaults from stack exhaustion when matching certain patterns .if !${PORT_OPTIONS:MSTACK_RECURSION} CONFIGURE_ARGS+= --disable-stack-for-recursion .endif # Optional knobs that accept positive integer parameters (see pcrebuild(3)): # Allow the use of very large patterns (> 64K) with the 8- and 16-bit # libraries, at the expense of longer load times (possible values: # 2 (default), 3, and 4): .if defined(WITH_LINK_SIZE) CONFIGURE_ARGS+= --with-link-size=${WITH_LINK_SIZE} .endif # Control PCRE resource use by limiting the default number of times pcre_exec() # can call match() during a single operation (default: 10 million): .if defined(WITH_MATCH_LIMIT) CONFIGURE_ARGS+= --with-match-limit=${WITH_MATCH_LIMIT} .endif # Control PCRE resource use by limiting the default number of times pcre_exec() # can call match() recursively during a single operation (default: 10 million): .if defined(WITH_MATCH_LIMIT_RECURSION) CONFIGURE_ARGS+= --with-match-limit-recursion=${WITH_MATCH_LIMIT_RECURSION} .endif # Control PCRE resource use by limiting the nesting depth of parentheses in # patterns compiled with pcre_compile() (default: 250): .if defined(WITH_PARENS_NEST_LIMIT) CONFIGURE_ARGS+= --with-parens-nest-limit=${WITH_PARENS_NEST_LIMIT} .endif # Adjust the default maximum number of substrings that will be stored on the stack # when the 8-bit library is called via the POSIX interface (default: 10): .if defined(WITH_POSIX_MALLOC_THRESHOLD) CONFIGURE_ARGS+= --with-posix-malloc-threshold=${WITH_POSIX_MALLOC_THRESHOLD} .endif post-patch: @${REINPLACE_CMD} -e "/^\.rs/d" ${WRKSRC}/doc/*.3 ${WRKSRC}/doc/*.1 @${REINPLACE_CMD} -e "s/£//g" ${WRKSRC}/doc/pcre_compile2.3 .if !${PORT_OPTIONS:MDOCS} @${REINPLACE_CMD} -E -e '/^install-data-am/,/^$$/ s,install-(dist_doc|dist_html|html)DATA,,g' \ ${WRKSRC}/Makefile.in .endif #prevent regression test coredumps from causing failures on the #package-building cluster: .ifndef(MAINTAINER_MODE) CORELIMIT?= /usr/bin/limits -Sc 0 .endif TESTLOGS?= RunGrepTest RunTest pcre_jit_test pcre_scanner_unittest \ pcre_stringpiece_unittest pcrecpp_unittest post-stage: ${LN} -s libpcre.so.1 ${STAGEDIR}${PREFIX}/lib/libpcre.so.3 check regression-test test: build @cd ${WRKSRC} ; \ ${SETENV} ${MAKE_ENV} ${CORELIMIT} ${MAKE_CMD} ${MAKE_ARGS} check ; \ for _l in ${TESTLOGS} ; do if ${TEST} -f $${_l}.log ; then \ ${PRINTF} "\n\n$${_l}.log\n\n\n" ; ${CAT} $${_l}.log ; fi ; done .include Index: branches/2016Q1/devel/pcre/distinfo =================================================================== --- branches/2016Q1/devel/pcre/distinfo (revision 411532) +++ branches/2016Q1/devel/pcre/distinfo (revision 411533) @@ -1,2 +1,2 @@ -SHA256 (pcre-8.37.tar.bz2) = 51679ea8006ce31379fb0860e46dd86665d864b5020fc9cd19e71260eef4789d -SIZE (pcre-8.37.tar.bz2) = 1557603 +SHA256 (pcre-8.38.tar.bz2) = b9e02d36e23024d6c02a2e5b25204b3a4fa6ade43e0a5f869f254f49535079df +SIZE (pcre-8.38.tar.bz2) = 1562265 Index: branches/2016Q1/devel/pcre/files/patch-CVE-2015-5073 =================================================================== --- branches/2016Q1/devel/pcre/files/patch-CVE-2015-5073 (revision 411532) +++ branches/2016Q1/devel/pcre/files/patch-CVE-2015-5073 (nonexistent) @@ -1,11 +0,0 @@ ---- pcre_compile.c.orig 2015/06/22 09:38:41 1570 -+++ pcre_compile.c 2015/06/23 16:34:53 1571 -@@ -9449,7 +9449,7 @@ - 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; - Property changes on: branches/2016Q1/devel/pcre/files/patch-CVE-2015-5073 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2016Q1/devel/pcre/files/patch-buffer-overflow =================================================================== --- branches/2016Q1/devel/pcre/files/patch-buffer-overflow (revision 411532) +++ branches/2016Q1/devel/pcre/files/patch-buffer-overflow (nonexistent) @@ -1,296 +0,0 @@ ---- pcre_compile.c.orig 2015-04-13 15:54:01 UTC -+++ pcre_compile.c -@@ -1799,7 +1799,7 @@ for (;;) - case OP_ASSERTBACK: - case OP_ASSERTBACK_NOT: - do cc += GET(cc, 1); while (*cc == OP_ALT); -- cc += PRIV(OP_lengths)[*cc]; -+ cc += 1 + LINK_SIZE; - break; - - /* Skip over things that don't match chars */ -@@ -3985,11 +3985,12 @@ have their offsets adjusted. That one of - is called, the partially compiled regex must be temporarily terminated with - OP_END. - --This function has been extended with the possibility of forward references for --recursions and subroutine calls. It must also check the list of such references --for the group we are dealing with. If it finds that one of the recursions in --the current group is on this list, it adjusts the offset in the list, not the --value in the reference (which is a group number). -+This function has been extended to cope with forward references for recursions -+and subroutine calls. It must check the list of such references for the -+group we are dealing with. If it finds that one of the recursions in the -+current group is on this list, it does not adjust the value in the reference -+(which is a group number). After the group has been scanned, all the offsets in -+the forward reference list for the group are adjusted. - - Arguments: - group points to the start of the group -@@ -4005,29 +4006,21 @@ static void - adjust_recurse(pcre_uchar *group, int adjust, BOOL utf, compile_data *cd, - size_t save_hwm_offset) - { -+int offset; -+pcre_uchar *hc; - pcre_uchar *ptr = group; - - while ((ptr = (pcre_uchar *)find_recurse(ptr, utf)) != NULL) - { -- int offset; -- pcre_uchar *hc; -- -- /* See if this recursion is on the forward reference list. If so, adjust the -- reference. */ -- - for (hc = (pcre_uchar *)cd->start_workspace + save_hwm_offset; hc < cd->hwm; - hc += LINK_SIZE) - { - offset = (int)GET(hc, 0); -- if (cd->start_code + offset == ptr + 1) -- { -- PUT(hc, 0, offset + adjust); -- break; -- } -+ if (cd->start_code + offset == ptr + 1) break; - } - -- /* Otherwise, adjust the recursion offset if it's after the start of this -- group. */ -+ /* If we have not found this recursion on the forward reference list, adjust -+ the recursion's offset if it's after the start of this group. */ - - if (hc >= cd->hwm) - { -@@ -4037,6 +4030,15 @@ while ((ptr = (pcre_uchar *)find_recurse - - ptr += 1 + LINK_SIZE; - } -+ -+/* Now adjust all forward reference offsets for the group. */ -+ -+for (hc = (pcre_uchar *)cd->start_workspace + save_hwm_offset; hc < cd->hwm; -+ hc += LINK_SIZE) -+ { -+ offset = (int)GET(hc, 0); -+ PUT(hc, 0, offset + adjust); -+ } - } - - -@@ -4465,7 +4467,7 @@ const pcre_uchar *tempptr; - const pcre_uchar *nestptr = NULL; - pcre_uchar *previous = NULL; - pcre_uchar *previous_callout = NULL; --size_t save_hwm_offset = 0; -+size_t item_hwm_offset = 0; - pcre_uint8 classbits[32]; - - /* We can fish out the UTF-8 setting once and for all into a BOOL, but we -@@ -4767,6 +4769,7 @@ for (;; ptr++) - zeroreqchar = reqchar; - zeroreqcharflags = reqcharflags; - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - *code++ = ((options & PCRE_DOTALL) != 0)? OP_ALLANY: OP_ANY; - break; - -@@ -4818,6 +4821,7 @@ for (;; ptr++) - /* Handle a real character class. */ - - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - - /* PCRE supports POSIX class stuff inside a class. Perl gives an error if - they are encountered at the top level, so we'll do that too. */ -@@ -5930,7 +5934,7 @@ for (;; ptr++) - { - register int i; - int len = (int)(code - previous); -- size_t base_hwm_offset = save_hwm_offset; -+ size_t base_hwm_offset = item_hwm_offset; - pcre_uchar *bralink = NULL; - pcre_uchar *brazeroptr = NULL; - -@@ -5985,7 +5989,7 @@ for (;; ptr++) - if (repeat_max <= 1) /* Covers 0, 1, and unlimited */ - { - *code = OP_END; -- adjust_recurse(previous, 1, utf, cd, save_hwm_offset); -+ adjust_recurse(previous, 1, utf, cd, item_hwm_offset); - memmove(previous + 1, previous, IN_UCHARS(len)); - code++; - if (repeat_max == 0) -@@ -6009,7 +6013,7 @@ for (;; ptr++) - { - int offset; - *code = OP_END; -- adjust_recurse(previous, 2 + LINK_SIZE, utf, cd, save_hwm_offset); -+ adjust_recurse(previous, 2 + LINK_SIZE, utf, cd, item_hwm_offset); - memmove(previous + 2 + LINK_SIZE, previous, IN_UCHARS(len)); - code += 2 + LINK_SIZE; - *previous++ = OP_BRAZERO + repeat_type; -@@ -6267,7 +6271,7 @@ for (;; ptr++) - { - int nlen = (int)(code - bracode); - *code = OP_END; -- adjust_recurse(bracode, 1 + LINK_SIZE, utf, cd, save_hwm_offset); -+ adjust_recurse(bracode, 1 + LINK_SIZE, utf, cd, item_hwm_offset); - memmove(bracode + 1 + LINK_SIZE, bracode, IN_UCHARS(nlen)); - code += 1 + LINK_SIZE; - nlen += 1 + LINK_SIZE; -@@ -6401,7 +6405,7 @@ for (;; ptr++) - else - { - *code = OP_END; -- adjust_recurse(tempcode, 1 + LINK_SIZE, utf, cd, save_hwm_offset); -+ adjust_recurse(tempcode, 1 + LINK_SIZE, utf, cd, item_hwm_offset); - memmove(tempcode + 1 + LINK_SIZE, tempcode, IN_UCHARS(len)); - code += 1 + LINK_SIZE; - len += 1 + LINK_SIZE; -@@ -6450,7 +6454,7 @@ for (;; ptr++) - - default: - *code = OP_END; -- adjust_recurse(tempcode, 1 + LINK_SIZE, utf, cd, save_hwm_offset); -+ adjust_recurse(tempcode, 1 + LINK_SIZE, utf, cd, item_hwm_offset); - memmove(tempcode + 1 + LINK_SIZE, tempcode, IN_UCHARS(len)); - code += 1 + LINK_SIZE; - len += 1 + LINK_SIZE; -@@ -6623,7 +6627,7 @@ for (;; ptr++) - newoptions = options; - skipbytes = 0; - bravalue = OP_CBRA; -- save_hwm_offset = cd->hwm - cd->start_workspace; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - reset_bracount = FALSE; - - /* Deal with the extended parentheses; all are introduced by '?', and the -@@ -6769,7 +6773,7 @@ for (;; ptr++) - ptr++; - } - namelen = (int)(ptr - name); -- if (lengthptr != NULL) *lengthptr += IMM2_SIZE; -+ if (lengthptr != NULL) skipbytes += IMM2_SIZE; - } - - /* Check the terminator */ -@@ -7173,14 +7177,26 @@ for (;; ptr++) - number. If the name is not found, set the value to 0 for a forward - reference. */ - -+ recno = 0; - ng = cd->named_groups; - for (i = 0; i < cd->names_found; i++, ng++) - { - if (namelen == ng->length && - STRNCMP_UC_UC(name, ng->name, namelen) == 0) -- break; -+ { -+ open_capitem *oc; -+ recno = ng->number; -+ if (is_recurse) break; -+ for (oc = cd->open_caps; oc != NULL; oc = oc->next) -+ { -+ if (oc->number == recno) -+ { -+ oc->flag = TRUE; -+ break; -+ } -+ } -+ } - } -- recno = (i < cd->names_found)? ng->number : 0; - - /* Count named back references. */ - -@@ -7191,6 +7207,19 @@ for (;; ptr++) - 16-bit data item. */ - - *lengthptr += IMM2_SIZE; -+ -+ /* If this is a forward reference and we are within a (?|...) group, -+ the reference may end up as the number of a group which we are -+ currently inside, that is, it could be a recursive reference. In the -+ real compile this will be picked up and the reference wrapped with -+ OP_ONCE to make it atomic, so we must space in case this occurs. */ -+ -+ /* In fact, this can happen for a non-forward reference because -+ another group with the same number might be created later. This -+ issue is fixed "properly" in PCRE2. As PCRE1 is now in maintenance -+ only mode, we finesse the bug by allowing more memory always. */ -+ -+ /* if (recno == 0) */ *lengthptr += 2 + 2*LINK_SIZE; - } - - /* In the real compile, search the name table. We check the name -@@ -7247,6 +7276,7 @@ for (;; ptr++) - { - if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - *code++ = ((options & PCRE_CASELESS) != 0)? OP_DNREFI : OP_DNREF; - PUT2INC(code, 0, index); - PUT2INC(code, 0, count); -@@ -7360,6 +7390,7 @@ for (;; ptr++) - HANDLE_RECURSION: - - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - called = cd->start_code; - - /* When we are actually compiling, find the bracket that is being -@@ -7561,7 +7592,11 @@ for (;; ptr++) - previous = NULL; - cd->iscondassert = FALSE; - } -- else previous = code; -+ else -+ { -+ previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; -+ } - - *code = bravalue; - tempcode = code; -@@ -7809,7 +7844,7 @@ for (;; ptr++) - const pcre_uchar *p; - pcre_uint32 cf; - -- save_hwm_offset = cd->hwm - cd->start_workspace; /* Normally this is set when '(' is read */ -+ item_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; - -@@ -7877,6 +7912,7 @@ for (;; ptr++) - HANDLE_REFERENCE: - if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - *code++ = ((options & PCRE_CASELESS) != 0)? OP_REFI : OP_REF; - PUT2INC(code, 0, recno); - cd->backref_map |= (recno < 32)? (1 << recno) : 1; -@@ -7906,6 +7942,7 @@ for (;; ptr++) - if (!get_ucp(&ptr, &negated, &ptype, &pdata, errorcodeptr)) - goto FAILED; - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - *code++ = ((escape == ESC_p) != negated)? OP_PROP : OP_NOTPROP; - *code++ = ptype; - *code++ = pdata; -@@ -7946,6 +7983,7 @@ for (;; ptr++) - - { - previous = (escape > ESC_b && escape < ESC_Z)? code : NULL; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - *code++ = (!utf && escape == ESC_C)? OP_ALLANY : escape; - } - } -@@ -7989,6 +8027,7 @@ for (;; ptr++) - - ONE_CHAR: - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - - /* For caseless UTF-8 mode when UCP support is available, check whether - this character has more than one other case. If so, generate a special Property changes on: branches/2016Q1/devel/pcre/files/patch-buffer-overflow ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2016Q1/devel/pcre/files/patch-r1594-heap-overflow =================================================================== --- branches/2016Q1/devel/pcre/files/patch-r1594-heap-overflow (revision 411532) +++ branches/2016Q1/devel/pcre/files/patch-r1594-heap-overflow (nonexistent) @@ -1,20 +0,0 @@ ---- pcre_compile.c 2015/08/14 09:34:32 1593 -+++ pcre_compile.c 2015/08/21 16:08:33 1594 -@@ -7238,7 +7238,7 @@ - encountered. In that case, we allow yet more memory, just in case. - (Again, this is fixed "properly" in PCRE2. */ - -- if (cd->dupgroups) *lengthptr += 2 + 2*LINK_SIZE; -+ if (cd->dupgroups) *lengthptr += 4 + 4*LINK_SIZE; - - /* Otherwise, check for recursion here. The name table does not exist - in the first pass; instead we must scan the list of names encountered -@@ -9474,7 +9474,7 @@ - "const" attribute if the cast (pcre_uchar *)codestart is used directly in the - function call. */ - --if ((options & PCRE_NO_AUTO_POSSESS) == 0) -+if (errorcode == 0 && (options & PCRE_NO_AUTO_POSSESS) == 0) - { - pcre_uchar *temp = (pcre_uchar *)codestart; - auto_possessify(temp, utf, cd); Property changes on: branches/2016Q1/devel/pcre/files/patch-r1594-heap-overflow ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2016Q1/devel/pcre/files/patch-r1585-buffer-overflow =================================================================== --- branches/2016Q1/devel/pcre/files/patch-r1585-buffer-overflow (revision 411532) +++ branches/2016Q1/devel/pcre/files/patch-r1585-buffer-overflow (nonexistent) @@ -1,139 +0,0 @@ -Index: pcre_internal.h -=================================================================== ---- pcre_internal.h (revision 1584) -+++ pcre_internal.h (revision 1585) -@@ -2454,6 +2454,7 @@ - BOOL had_pruneorskip; /* (*PRUNE) or (*SKIP) encountered */ - BOOL check_lookbehind; /* Lookbehinds need later checking */ - BOOL dupnames; /* Duplicate names exist */ -+ BOOL dupgroups; /* Duplicate groups exist: (?| found */ - BOOL iscondassert; /* Next assert is a condition */ - int nltype; /* Newline type */ - int nllen; /* Newline string length */ -Index: pcre_compile.c -=================================================================== ---- pcre_compile.c (revision 1584) -+++ pcre_compile.c (revision 1585) -@@ -6668,6 +6668,7 @@ - /* ------------------------------------------------------------ */ - case CHAR_VERTICAL_LINE: /* Reset capture count for each branch */ - reset_bracount = TRUE; -+ cd->dupgroups = TRUE; /* Record (?| encountered */ - /* Fall through */ - - /* ------------------------------------------------------------ */ -@@ -7178,7 +7179,8 @@ - if (lengthptr != NULL) - { - named_group *ng; -- -+ recno = 0; -+ - if (namelen == 0) - { - *errorcodeptr = ERR62; -@@ -7195,32 +7197,6 @@ - goto FAILED; - } - -- /* The name table does not exist in the first pass; instead we must -- scan the list of names encountered so far in order to get the -- number. If the name is not found, set the value to 0 for a forward -- reference. */ -- -- recno = 0; -- ng = cd->named_groups; -- for (i = 0; i < cd->names_found; i++, ng++) -- { -- if (namelen == ng->length && -- STRNCMP_UC_UC(name, ng->name, namelen) == 0) -- { -- open_capitem *oc; -- recno = ng->number; -- if (is_recurse) break; -- for (oc = cd->open_caps; oc != NULL; oc = oc->next) -- { -- if (oc->number == recno) -- { -- oc->flag = TRUE; -- break; -- } -- } -- } -- } -- - /* Count named back references. */ - - if (!is_recurse) cd->namedrefcount++; -@@ -7242,7 +7218,44 @@ - issue is fixed "properly" in PCRE2. As PCRE1 is now in maintenance - only mode, we finesse the bug by allowing more memory always. */ - -- /* if (recno == 0) */ *lengthptr += 2 + 2*LINK_SIZE; -+ *lengthptr += 2 + 2*LINK_SIZE; -+ -+ /* It is even worse than that. The current reference may be to an -+ existing named group with a different number (so apparently not -+ recursive) but which later on is also attached to a group with the -+ current number. This can only happen if $(| has been previous -+ encountered. In that case, we allow yet more memory, just in case. -+ (Again, this is fixed "properly" in PCRE2. */ -+ -+ if (cd->dupgroups) *lengthptr += 2 + 2*LINK_SIZE; -+ -+ /* Otherwise, check for recursion here. The name table does not exist -+ in the first pass; instead we must scan the list of names encountered -+ so far in order to get the number. If the name is not found, leave -+ the value of recno as 0 for a forward reference. */ -+ -+ else -+ { -+ ng = cd->named_groups; -+ for (i = 0; i < cd->names_found; i++, ng++) -+ { -+ if (namelen == ng->length && -+ STRNCMP_UC_UC(name, ng->name, namelen) == 0) -+ { -+ open_capitem *oc; -+ recno = ng->number; -+ if (is_recurse) break; -+ for (oc = cd->open_caps; oc != NULL; oc = oc->next) -+ { -+ if (oc->number == recno) -+ { -+ oc->flag = TRUE; -+ break; -+ } -+ } -+ } -+ } -+ } - } - - /* In the real compile, search the name table. We check the name -@@ -7289,8 +7302,6 @@ - for (i++; i < cd->names_found; i++) - { - if (STRCMP_UC_UC(slot + IMM2_SIZE, cslot + IMM2_SIZE) != 0) break; -- -- - count++; - cslot += cd->name_entry_size; - } -@@ -9239,6 +9250,7 @@ - cd->name_entry_size = 0; - cd->name_table = NULL; - cd->dupnames = FALSE; -+cd->dupgroups = FALSE; - cd->namedrefcount = 0; - cd->start_code = cworkspace; - cd->hwm = cworkspace; -@@ -9273,7 +9285,7 @@ - - DPRINTF(("end pre-compile: length=%d workspace=%d\n", length, - (int)(cd->hwm - cworkspace))); -- -+ - if (length > MAX_PATTERN_SIZE) - { - errorcode = ERR20; Property changes on: branches/2016Q1/devel/pcre/files/patch-r1585-buffer-overflow ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2016Q1/devel/pcre/files/patch-CVE-2016-3191 =================================================================== --- branches/2016Q1/devel/pcre/files/patch-CVE-2016-3191 (nonexistent) +++ branches/2016Q1/devel/pcre/files/patch-CVE-2016-3191 (revision 411533) @@ -0,0 +1,94 @@ +--- pcre_compile.c 2016/02/10 10:53:45 1630 ++++ pcre_compile.c 2016/02/10 19:13:17 1631 +@@ -6,7 +6,7 @@ + and semantics are as close as possible to those of the Perl 5 language. + + Written by Philip Hazel +- Copyright (c) 1997-2014 University of Cambridge ++ Copyright (c) 1997-2016 University of Cambridge + + ----------------------------------------------------------------------------- + Redistribution and use in source and binary forms, with or without +@@ -560,6 +560,7 @@ + /* 85 */ + "parentheses are too deeply nested (stack check)\0" + "digits missing in \\x{} or \\o{}\0" ++ "regular expression is too complicated\0" + ; + + /* Table to identify digits and hex digits. This is used when compiling +@@ -4591,7 +4592,8 @@ + if (code > cd->start_workspace + cd->workspace_size - + WORK_SIZE_SAFETY_MARGIN) /* Check for overrun */ + { +- *errorcodeptr = ERR52; ++ *errorcodeptr = (code >= cd->start_workspace + cd->workspace_size)? ++ ERR52 : ERR87; + goto FAILED; + } + +@@ -6626,8 +6628,21 @@ + cd->had_accept = TRUE; + for (oc = cd->open_caps; oc != NULL; oc = oc->next) + { +- *code++ = OP_CLOSE; +- PUT2INC(code, 0, oc->number); ++ if (lengthptr != NULL) ++ { ++#ifdef COMPILE_PCRE8 ++ *lengthptr += 1 + IMM2_SIZE; ++#elif defined COMPILE_PCRE16 ++ *lengthptr += 2 + IMM2_SIZE; ++#elif defined COMPILE_PCRE32 ++ *lengthptr += 4 + IMM2_SIZE; ++#endif ++ } ++ else ++ { ++ *code++ = OP_CLOSE; ++ PUT2INC(code, 0, oc->number); ++ } + } + setverb = *code++ = + (cd->assert_depth > 0)? OP_ASSERT_ACCEPT : OP_ACCEPT; +--- pcre_internal.h 2016/02/10 10:53:45 1630 ++++ pcre_internal.h 2016/02/10 19:13:17 1631 +@@ -7,7 +7,7 @@ + and semantics are as close as possible to those of the Perl 5 language. + + Written by Philip Hazel +- Copyright (c) 1997-2014 University of Cambridge ++ Copyright (c) 1997-2016 University of Cambridge + + ----------------------------------------------------------------------------- + Redistribution and use in source and binary forms, with or without +@@ -2289,7 +2289,7 @@ + ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59, + ERR60, ERR61, ERR62, ERR63, ERR64, ERR65, ERR66, ERR67, ERR68, ERR69, + ERR70, ERR71, ERR72, ERR73, ERR74, ERR75, ERR76, ERR77, ERR78, ERR79, +- ERR80, ERR81, ERR82, ERR83, ERR84, ERR85, ERR86, ERRCOUNT }; ++ ERR80, ERR81, ERR82, ERR83, ERR84, ERR85, ERR86, ERR87, ERRCOUNT }; + + /* JIT compiling modes. The function list is indexed by them. */ + +--- pcreposix.c 2016/02/10 10:53:45 1630 ++++ pcreposix.c 2016/02/10 19:13:17 1631 +@@ -6,7 +6,7 @@ + and semantics are as close as possible to those of the Perl 5 language. + + Written by Philip Hazel +- Copyright (c) 1997-2014 University of Cambridge ++ Copyright (c) 1997-2016 University of Cambridge + + ----------------------------------------------------------------------------- + Redistribution and use in source and binary forms, with or without +@@ -173,7 +173,8 @@ + REG_BADPAT, /* group name must start with a non-digit */ + /* 85 */ + REG_BADPAT, /* parentheses too deeply nested (stack check) */ +- REG_BADPAT /* missing digits in \x{} or \o{} */ ++ REG_BADPAT, /* missing digits in \x{} or \o{} */ ++ REG_BADPAT /* pattern too complicated */ + }; + + /* Table of texts corresponding to POSIX error codes */ Property changes on: branches/2016Q1/devel/pcre/files/patch-CVE-2016-3191 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: branches/2016Q1/devel/pcre/pkg-plist =================================================================== --- branches/2016Q1/devel/pcre/pkg-plist (revision 411532) +++ branches/2016Q1/devel/pcre/pkg-plist (revision 411533) @@ -1,138 +1,138 @@ bin/pcre-config bin/pcregrep bin/pcretest include/pcre.h include/pcreposix.h include/pcre_scanner.h include/pcre_stringpiece.h include/pcrecpparg.h include/pcrecpp.h lib/libpcre.a lib/libpcre.so lib/libpcre.so.1 -lib/libpcre.so.1.2.5 +lib/libpcre.so.1.2.6 lib/libpcre.so.3 lib/libpcre16.a lib/libpcre16.so lib/libpcre16.so.0 -lib/libpcre16.so.0.2.5 +lib/libpcre16.so.0.2.6 lib/libpcre32.a lib/libpcre32.so lib/libpcre32.so.0 -lib/libpcre32.so.0.0.5 +lib/libpcre32.so.0.0.6 lib/libpcrecpp.a lib/libpcrecpp.so lib/libpcrecpp.so.0 lib/libpcrecpp.so.0.0.1 lib/libpcreposix.a lib/libpcreposix.so lib/libpcreposix.so.0 lib/libpcreposix.so.0.0.3 libdata/pkgconfig/libpcre.pc libdata/pkgconfig/libpcre16.pc libdata/pkgconfig/libpcre32.pc libdata/pkgconfig/libpcrecpp.pc libdata/pkgconfig/libpcreposix.pc man/man1/pcre-config.1.gz man/man1/pcregrep.1.gz man/man1/pcretest.1.gz man/man3/pcre.3.gz man/man3/pcre16.3.gz man/man3/pcre16_assign_jit_stack.3.gz man/man3/pcre16_compile.3.gz man/man3/pcre16_compile2.3.gz man/man3/pcre16_config.3.gz man/man3/pcre16_copy_named_substring.3.gz man/man3/pcre16_copy_substring.3.gz man/man3/pcre16_dfa_exec.3.gz man/man3/pcre16_exec.3.gz man/man3/pcre16_free_study.3.gz man/man3/pcre16_free_substring.3.gz man/man3/pcre16_free_substring_list.3.gz man/man3/pcre16_fullinfo.3.gz man/man3/pcre16_get_named_substring.3.gz man/man3/pcre16_get_stringnumber.3.gz man/man3/pcre16_get_stringtable_entries.3.gz man/man3/pcre16_get_substring.3.gz man/man3/pcre16_get_substring_list.3.gz man/man3/pcre16_jit_exec.3.gz man/man3/pcre16_jit_stack_alloc.3.gz man/man3/pcre16_jit_stack_free.3.gz man/man3/pcre16_maketables.3.gz man/man3/pcre16_pattern_to_host_byte_order.3.gz man/man3/pcre16_refcount.3.gz man/man3/pcre16_study.3.gz man/man3/pcre16_utf16_to_host_byte_order.3.gz man/man3/pcre16_version.3.gz man/man3/pcre32.3.gz man/man3/pcre32_assign_jit_stack.3.gz man/man3/pcre32_compile.3.gz man/man3/pcre32_compile2.3.gz man/man3/pcre32_config.3.gz man/man3/pcre32_copy_named_substring.3.gz man/man3/pcre32_copy_substring.3.gz man/man3/pcre32_dfa_exec.3.gz man/man3/pcre32_exec.3.gz man/man3/pcre32_free_study.3.gz man/man3/pcre32_free_substring.3.gz man/man3/pcre32_free_substring_list.3.gz man/man3/pcre32_fullinfo.3.gz man/man3/pcre32_get_named_substring.3.gz man/man3/pcre32_get_stringnumber.3.gz man/man3/pcre32_get_stringtable_entries.3.gz man/man3/pcre32_get_substring.3.gz man/man3/pcre32_get_substring_list.3.gz man/man3/pcre32_jit_exec.3.gz man/man3/pcre32_jit_stack_alloc.3.gz man/man3/pcre32_jit_stack_free.3.gz man/man3/pcre32_maketables.3.gz man/man3/pcre32_pattern_to_host_byte_order.3.gz man/man3/pcre32_refcount.3.gz man/man3/pcre32_study.3.gz man/man3/pcre32_utf32_to_host_byte_order.3.gz man/man3/pcre32_version.3.gz man/man3/pcre_assign_jit_stack.3.gz man/man3/pcre_compile.3.gz man/man3/pcre_compile2.3.gz man/man3/pcre_config.3.gz man/man3/pcre_copy_named_substring.3.gz man/man3/pcre_copy_substring.3.gz man/man3/pcre_dfa_exec.3.gz man/man3/pcre_exec.3.gz man/man3/pcre_free_study.3.gz man/man3/pcre_free_substring.3.gz man/man3/pcre_free_substring_list.3.gz man/man3/pcre_fullinfo.3.gz man/man3/pcre_get_named_substring.3.gz man/man3/pcre_get_stringnumber.3.gz man/man3/pcre_get_stringtable_entries.3.gz man/man3/pcre_get_substring.3.gz man/man3/pcre_get_substring_list.3.gz man/man3/pcre_jit_exec.3.gz man/man3/pcre_jit_stack_alloc.3.gz man/man3/pcre_jit_stack_free.3.gz man/man3/pcre_maketables.3.gz man/man3/pcre_pattern_to_host_byte_order.3.gz man/man3/pcre_refcount.3.gz man/man3/pcre_study.3.gz man/man3/pcre_utf16_to_host_byte_order.3.gz man/man3/pcre_utf32_to_host_byte_order.3.gz man/man3/pcre_version.3.gz man/man3/pcreapi.3.gz man/man3/pcrebuild.3.gz man/man3/pcrecallout.3.gz man/man3/pcrecompat.3.gz man/man3/pcrecpp.3.gz man/man3/pcredemo.3.gz man/man3/pcrejit.3.gz man/man3/pcrelimits.3.gz man/man3/pcrematching.3.gz man/man3/pcrepartial.3.gz man/man3/pcrepattern.3.gz man/man3/pcreperform.3.gz man/man3/pcreposix.3.gz man/man3/pcreprecompile.3.gz man/man3/pcresample.3.gz man/man3/pcrestack.3.gz man/man3/pcresyntax.3.gz man/man3/pcreunicode.3.gz Index: branches/2016Q1 =================================================================== --- branches/2016Q1 (revision 411532) +++ branches/2016Q1 (revision 411533) Property changes on: branches/2016Q1 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head:r411532