Index: branches/2015Q3/devel/pcre/Makefile =================================================================== --- branches/2015Q3/devel/pcre/Makefile (revision 393916) +++ branches/2015Q3/devel/pcre/Makefile (revision 393917) @@ -1,117 +1,117 @@ # Created by: dom # $FreeBSD$ PORTNAME= pcre PORTVERSION= 8.37 -PORTREVISION= 2 +PORTREVISION= 3 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 LIBEDIT READLINE STACK_RECURSION OPTIONS_DEFAULT= STACK_RECURSION STACK_RECURSION_DESC= Use the stack for recursion during matching LIBEDIT_CONFIGURE_ENABLE= pcretest-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 # libedit .if ${PORT_OPTIONS:MLIBEDIT} CFLAGS+= -I /usr/include/edit .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/2015Q3/devel/pcre/files/patch-r1585-buffer-overflow =================================================================== --- branches/2015Q3/devel/pcre/files/patch-r1585-buffer-overflow (nonexistent) +++ branches/2015Q3/devel/pcre/files/patch-r1585-buffer-overflow (revision 393917) @@ -0,0 +1,139 @@ +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/2015Q3/devel/pcre/files/patch-r1585-buffer-overflow ___________________________________________________________________ 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/2015Q3 =================================================================== --- branches/2015Q3 (revision 393916) +++ branches/2015Q3 (revision 393917) Property changes on: branches/2015Q3 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head:r393915