From fef6a04f189f791b9bee9f17797890b12fee495f Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 13 Jul 2016 21:26:32 +0100 Subject: [PATCH] Import debian/ directory from 2:8.38-3.1 --- debian/README.Debian | 11 + debian/README.Versioning.libtool | 29 + debian/changelog | 789 ++++++++++++++++++ debian/compat | 1 + debian/control | 117 +++ debian/copyright | 74 ++ debian/dirs | 2 + debian/jit-test | 8 + debian/jit-test.c | 17 + debian/libpcre16-3.install | 1 + debian/libpcre16-3.symbols.in | 34 + debian/libpcre3-dev.examples | 1 + debian/libpcre3-dev.install | 6 + debian/libpcre3-dev.manpages | 2 + debian/libpcre3-udeb.install | 2 + debian/libpcre3.docs | 2 + debian/libpcre3.install | 3 + debian/libpcre3.symbols.in | 39 + debian/libpcre32-3.install | 1 + debian/libpcre32-3.symbols.in | 34 + debian/libpcrecpp0v5.docs | 2 + debian/libpcrecpp0v5.install | 1 + debian/libpcrecpp0v5.symbols | 87 ++ .../794589-information-disclosure.patch | 30 + debian/patches/CVE-2016-1283.patch | 47 ++ debian/patches/Disable_JIT_on_sparc64.patch | 23 + ...ion-for-patterns-like-1-1-with-forwa.patch | 145 ++++ ...bad-compile-for-groups-like-2-0-1999.patch | 209 +++++ ...low-for-named-recursive-back-referen.patch | 59 ++ ...-loop-for-recursive-reference-within.patch | 86 ++ ...sh-misbehaviour-for-zero-repeated-gr.patch | 175 ++++ .../Fix-silly-quantifier-size-check.patch | 100 +++ debian/patches/PCRE6_compatible_API.patch | 40 + .../apply-upstream-revision-1631-closes-8159 | 141 ++++ debian/patches/cve-2014-8964.patch | 23 + debian/patches/fix_find_fixedlength.patch | 21 + debian/patches/no_jit_x32_powerpcspe.patch | 33 + debian/patches/pcre_info.patch | 385 +++++++++ debian/patches/pcregrep.1-patch | 26 + debian/patches/pcreposix.patch | 31 + debian/patches/series | 9 + debian/patches/soname.patch | 21 + debian/pcre-config.1 | 57 ++ debian/pcregrep.files | 3 + debian/pcregrep.install | 4 + debian/pcregrep.links | 2 + debian/rules | 146 ++++ debian/source/format | 1 + debian/source/options | 2 + debian/watch | 2 + debian/zpcregrep | 2 + 51 files changed, 3086 insertions(+) create mode 100644 debian/README.Debian create mode 100644 debian/README.Versioning.libtool create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/dirs create mode 100644 debian/jit-test create mode 100644 debian/jit-test.c create mode 100644 debian/libpcre16-3.install create mode 100644 debian/libpcre16-3.symbols.in create mode 100644 debian/libpcre3-dev.examples create mode 100644 debian/libpcre3-dev.install create mode 100644 debian/libpcre3-dev.manpages create mode 100644 debian/libpcre3-udeb.install create mode 100644 debian/libpcre3.docs create mode 100644 debian/libpcre3.install create mode 100644 debian/libpcre3.symbols.in create mode 100644 debian/libpcre32-3.install create mode 100644 debian/libpcre32-3.symbols.in create mode 100644 debian/libpcrecpp0v5.docs create mode 100644 debian/libpcrecpp0v5.install create mode 100644 debian/libpcrecpp0v5.symbols create mode 100644 debian/patches/794589-information-disclosure.patch create mode 100644 debian/patches/CVE-2016-1283.patch create mode 100644 debian/patches/Disable_JIT_on_sparc64.patch create mode 100644 debian/patches/Fix-bad-compilation-for-patterns-like-1-1-with-forwa.patch create mode 100644 debian/patches/Fix-bad-compile-for-groups-like-2-0-1999.patch create mode 100644 debian/patches/Fix-buffer-overflow-for-named-recursive-back-referen.patch create mode 100644 debian/patches/Fix-compile-time-loop-for-recursive-reference-within.patch create mode 100644 debian/patches/Fix-compiler-crash-misbehaviour-for-zero-repeated-gr.patch create mode 100644 debian/patches/Fix-silly-quantifier-size-check.patch create mode 100644 debian/patches/PCRE6_compatible_API.patch create mode 100644 debian/patches/apply-upstream-revision-1631-closes-8159 create mode 100644 debian/patches/cve-2014-8964.patch create mode 100644 debian/patches/fix_find_fixedlength.patch create mode 100644 debian/patches/no_jit_x32_powerpcspe.patch create mode 100644 debian/patches/pcre_info.patch create mode 100644 debian/patches/pcregrep.1-patch create mode 100644 debian/patches/pcreposix.patch create mode 100644 debian/patches/series create mode 100644 debian/patches/soname.patch create mode 100644 debian/pcre-config.1 create mode 100644 debian/pcregrep.files create mode 100644 debian/pcregrep.install create mode 100644 debian/pcregrep.links create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 debian/source/options create mode 100644 debian/watch create mode 100644 debian/zpcregrep diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 0000000..ac6bde6 --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,11 @@ +libpcre for debian +------------------ + +Upstream's library version is much lower than Debian's - PCRE_LIB_VERSION=0:1:0 +instead of 13:0:10 (soname libpcre.so.0 instead of libpcre.so.3) + +The other change I made is to prefix the names of the functions in libpcreposix +with "pcreposix_". This is required so they don't clash with the ones in +libc. Suitable #defines have been added to pcreposix.h so that the +unprefixed names can be used. + diff --git a/debian/README.Versioning.libtool b/debian/README.Versioning.libtool new file mode 100644 index 0000000..e963b71 --- /dev/null +++ b/debian/README.Versioning.libtool @@ -0,0 +1,29 @@ +Debian release of PCRE 4.5 had + +PCRE_LIB_VERSION=13:0:10 +PCRE_POSIXLIB_VERSION=13:0:10 + +which corresponds to latest debian-revision (soname libpcre.so.3, +installed as libpcre.so.3.9.0) and followed the instructions about version +numbering in the libtool manual: +| 3. If the library source code has changed at all since the last +| update, then increment REVISION (`C:R:A' becomes `C:r+1:A'). + +13:1:10 + + 4. If any interfaces have been added, removed, or changed since the + last update, increment CURRENT, and set REVISION to 0. + +14:0:10 + + 5. If any interfaces have been added since the last public release, + then increment AGE. + +14:0:11 + + 6. If any interfaces have been removed since the last public release, + then set AGE to 0. + +n/a + +Therefore I'm using 14:0:11 for this release of PCRE 5.0 diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..0621273 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,789 @@ +pcre3 (2:8.38-3.1) unstable; urgency=medium + + * Non-maintainer upload. + * CVE-2016-1283: heap buffer overflow in handling of duplicate named + groups (Closes: #809706) + + -- Salvatore Bonaccorso Tue, 22 Mar 2016 21:05:13 +0100 + +pcre3 (2:8.38-3) unstable; urgency=low + + * Apply Ubuntu patch from Iain Lane (modified by Graham Inggs) to add + symbols files (Closes: #767374) + + -- Matthew Vernon Sun, 28 Feb 2016 11:24:52 +0000 + +pcre3 (2:8.38-2) unstable; urgency=low + + * Apply upstream patch to fix workspace overflow for (*ACCEPT) with + deeply nested parentheses (Closes: #815921) + + -- Matthew Vernon Sat, 27 Feb 2016 16:30:35 +0000 + +pcre3 (2:8.38-1) unstable; urgency=low + + * New upstream version + + -- Matthew Vernon Tue, 22 Dec 2015 13:37:39 +0000 + +pcre3 (2:8.35-8) unstable; urgency=low + + * Remove conflicts with long-vanished pcre{1,2}-dev packages (so new PCRE2 packages can co-exist) + + -- Matthew Vernon Sat, 21 Nov 2015 15:35:13 +0000 + +pcre3 (2:8.35-7.4) unstable; urgency=medium + + * Non-maintainer upload. + * Fix copy-and-paste error in Disable_JIT_on_sparc64.patch. + + -- John Paul Adrian Glaubitz Mon, 02 Nov 2015 18:51:13 +0100 + +pcre3 (2:8.35-7.3) unstable; urgency=medium + + * Non-maintainer upload. + * Add Disable_JIT_on_sparc64.patch to disable JIT on sparc64. The patch + no_jit_x32_powerpcspe.patch to disable JIT on powerpcspe was already + added in 2:8.35-6 (Closes: #765079). + + -- John Paul Adrian Glaubitz Mon, 02 Nov 2015 15:13:16 +0100 + +pcre3 (2:8.35-7.2) unstable; urgency=low + + * Non-maintainer upload (with maintainer's permission). + * Add Fix-compiler-crash-misbehaviour-for-zero-repeated-gr.patch. + Fixes "PCRE Library Stack Overflow Vulnerability" (Upstream bug 1503) + * Add Fix-compile-time-loop-for-recursive-reference-within.patch. + Fixes "PCRE Call Stack Overflow Vulnerability" (Upstream bug 1515) + * Add 794589-information-disclosure.patch. + Fixes "pcre_exec does not fill offsets for certain regexps" leading to + information disclosure. (Closes: #794589) + * Add Fix-bad-compile-for-groups-like-2-0-1999.patch. + CVE-2015-2325: heap buffer overflow in compile_branch(). (Closes: #781795) + * Add Fix-bad-compilation-for-patterns-like-1-1-with-forwa.patch. + CVE-2015-2326: heap buffer overflow in pcre_compile2(). (Closes: #783285) + * Add Fix-buffer-overflow-for-named-recursive-back-referen.patch. + CVE-2015-3210: heap buffer overflow in pcre_compile2() / + compile_regex(). (Closes: #787433) + + -- Salvatore Bonaccorso Fri, 11 Sep 2015 20:04:19 +0200 + +pcre3 (2:8.35-7.1) unstable; urgency=medium + + * Rename libpcrecpp0 to libpcrecpp0v5. Addresses: #791236. + * Add Conflict/Replaces to the old library. + * Add libpcrecpp0v5 symbols file for GCC 5. + + -- Matthias Klose Tue, 04 Aug 2015 20:23:03 +0200 + +pcre3 (2:8.35-7) unstable; urgency=medium + + * Apply upstream patch to fix buffer overflow for forward reference + within backward assertion with excess closing parenthesis + (Closes: #790000) + + -- Matthew Vernon Fri, 26 Jun 2015 08:08:55 +0100 + +pcre3 (2:8.35-6) unstable; urgency=low + + [ Thorsten Glaser ] + * Re-add patch disabling JIT on powerpcspe and x32 (Closes: #760327) + * Add back missing debian/changelog entries for 1:8.35-3.2 and 1:8.36-1 + + -- Matthew Vernon Sat, 13 Jun 2015 11:45:25 +0100 + +pcre3 (2:8.35-5) unstable; urgency=low + + * re-enable jit on ppc64el (by dropping the patch that disables it) + (Closes: #786530) + * patch from Frederic Bonnard to fix the watch file (Closes: #785726) + + -- Matthew Vernon Tue, 26 May 2015 08:27:56 +0100 + +pcre3 (2:8.35-4) experimental; urgency=medium + + [ Mattia Rizzolo ] + * Add a libpcre16-3 package with the 16 bit pcre16 library (Closes: 748781). + * Add a libpcre32-3 package with the 32 bit pcre32 library. + + [ Matthew Vernon ] + * Adopt this package (Closes: #772994) + + -- Matthew Vernon Sat, 07 Mar 2015 19:27:34 +0000 + +pcre3 (2:8.35-3.3) unstable; urgency=medium + + * Non-maintainer upload. + * Upstream patch for heap buffer overflow, CVE-2014-8964, taken from + 1:8.36-1 (Closes: #770478) + Thanks to Salvatore Bonaccorso for the reminder. + + -- Ivo De Decker Sat, 06 Dec 2014 19:58:19 +0100 + +pcre3 (2:8.35-3.2) unstable; urgency=medium + + * Non-maintainer upload. + * Update shlibs dependency to 1:8.35 for new symbol introduced in upstream + version 8.35 (Closes: #767907) + * Revert upload of upstream version 8.36 to allow this upload to migrate to + jessie. + + -- Ivo De Decker Sat, 06 Dec 2014 19:21:39 +0100 + +pcre3 (1:8.36-1) unstable; urgency=medium + + * New upstream release + * Upped shlibs dependency to 8.35 (Closes: #767903) + * Upstream patch for heap buffer overflow, CVE-2014-8964 (Closes: #770478) + + -- Mark Baker Mon, 24 Nov 2014 22:41:12 +0000 + +pcre3 (1:8.35-3.2) unstable; urgency=low + + * Non-maintainer upload with maintainer permission. + * Disable JIT on x32 and powerpcspe (Closes: #760327). + + -- Thorsten Glaser Wed, 12 Nov 2014 14:30:23 +0000 + +pcre3 (1:8.35-3.1) unstable; urgency=medium + + * Non-maintainer upload. + * Enable build hardening flags (closes: #656008). + + -- Michael Gilbert Fri, 19 Sep 2014 01:48:23 +0000 + +pcre3 (1:8.35-3) unstable; urgency=medium + + Thanks to Simon McVittie for all of the work on this: + + * Run tests with VERBOSE=1 so we can see the logs for failing tests + (Closes: #755052) + * Apply part of upstream r1472 to fix undefined behaviour when parsing + {n} or {m,n} quantifiers, which causes mis-parsing and test failures + under gcc 4.9 (Closes: #751828) + + -- Mark Baker Wed, 23 Jul 2014 21:19:41 +0100 + +pcre3 (1:8.35-2) unstable; urgency=medium + + * Build-depends on auto-reconf (Closes: 754540) + + -- Mark Baker Sat, 12 Jul 2014 23:03:47 +0100 + +pcre3 (1:8.35-1) unstable; urgency=medium + + * New upstream release + * Use dh-autoreconf + * Disable JIT on ppc64el (Closes: 751390) (Thanks Erwan Prioul) + + -- Mark Baker Fri, 11 Jul 2014 19:54:51 +0100 + +pcre3 (1:8.31-5) unstable; urgency=medium + + * Previous attempt at detecting JIT support didn't work when cross + compiling. Now runs the host compiler, and doesn't try to run the + output (Closes: 745222) + + -- Mark Baker Wed, 23 Apr 2014 21:00:35 +0100 + +pcre3 (1:8.31-4) unstable; urgency=medium + + * Enable JIT compilation only on architectures where it is supported - + fixes FTBFS on ones where it isn't (Closes: 745114) + * Verbose build logs (Closes: 745069) + + -- Mark Baker Fri, 18 Apr 2014 10:06:31 +0100 + +pcre3 (1:8.31-3) unstable; urgency=medium + + * Enable JIT regex compilation (http://sljit.sourceforge.net/pcre). + Note that this has no effect by default so should not break anything; + to use it you need to pass a flag to pcre_compile_regex() + (Closes: 740954) + * Changed shlibs:Depends to 8.20 as pcre_free_study() is not in older + versions (Closes: 743164) + + -- Mark Baker Tue, 08 Apr 2014 22:37:58 +0100 + +pcre3 (1:8.31-2) unstable; urgency=low + + * Build -dev package as Multi-arch: same. Thanks Steve Langasek / Ubuntu + for the patch (Closes: 696217) + + -- Mark Baker Thu, 03 Jan 2013 20:30:05 +0000 + +pcre3 (1:8.31-1) unstable; urgency=low + + * New upstream release + * Applied patch from upstream bugzilla #1287 to fix bug where wrong + value is in re_nsub in some cases (Closes: #686495) + + -- Mark Baker Thu, 13 Sep 2012 19:58:45 +0100 + +pcre3 (1:8.30-5) unstable; urgency=low + + * There is no use in including debug information for the libraries from + the udeb in the debug package; more importantly, because the + installation system isn't multiarch, if they are included they result + in arch specific files in arch independent paths (debug package is + Multi-arch:same). Removed. (Closes: #670018) + + -- Mark Baker Tue, 01 May 2012 22:38:42 +0100 + +pcre3 (1:8.30-4) unstable; urgency=low + + * Reluctantly using an epoch, as it seems the funny version number with + extra dots causes problems + * Bumped standard version to 3.9.3. No changes needed + * Converted to use new source format / quilt + * Put back obsolete pcre_info() API that up + * Don't include pcregrep binary in debug package + + Thanks to Elimar Riesebieter for the conversion to the new source format. + + -- Mark Baker Fri, 23 Mar 2012 22:34:54 +0000 + +pcre3 (8.30..-3) unstable; urgency=low + + * configure: fixed libpcreposix version (this is not the same bug as the + previous one, though it's in the same few lines) + + -- Mark Baker Thu, 22 Mar 2012 19:45:03 +0000 + +pcre3 (8.30..-2) unstable; urgency=low + + * configure: Correct library version so soname is libpcre.so.3 instead + of .2 (Closes: #664983) + * Horrible version number is because of NMU of "8.30.really8.12-1.1"; + this will sort between that and 8.31-1 + + -- Mark Baker Thu, 22 Mar 2012 17:52:35 +0000 + +pcre3 (8.30-1) unstable; urgency=low + + * New upstream release (Closes:#664166) + + -- Mark Baker Wed, 21 Mar 2012 21:03:39 +0000 + +pcre3 (8.12-4) unstable; urgency=low + + * Multi-arch support. Thanks Steve Langasek for patch (Closes: 634250) + + -- Mark Baker Mon, 18 Jul 2011 21:59:44 +0100 + +pcre3 (8.12-3) unstable; urgency=low + + * debian/rules: Increased shlib version to 8.10 (Closes: #612942, + #613227, #613469, #614012, #615019) + + -- Mark Baker Sun, 20 Feb 2011 12:46:44 +0000 + +pcre3 (8.12-2) unstable; urgency=low + + * Include changes from Stéphane's NMU (including fix for bug 581202) + that were accidentally omitted in previous release. + * debian/control: -dbg package should be section debug, priority extra + + -- Mark Baker Tue, 08 Feb 2011 20:38:49 +0000 + +pcre3 (8.12-1) unstable; urgency=low + + * New upstream release (Closes: #554242) + + -- Mark Baker Mon, 07 Feb 2011 23:53:42 +0000 + +pcre3 (8.02-1.1) unstable; urgency=low + + * Non-maintainer upload. + * Add explicit Breaks to applications using libpcre-ocaml, to allow + proper upgrades from lenny (Closes: #581202) + * Add debian/watch + * Add debian/source/format + * Remove duplicate fields spotted by Lintian + * Promote XC-Package-Type field to Package-Type + + -- Stéphane Glondu Sat, 31 Jul 2010 16:05:27 -0400 + +pcre3 (8.02-1) unstable; urgency=low + + * New upstream release + + -- Mark Baker Fri, 07 May 2010 21:18:05 +0100 + +pcre3 (7.8-3) unstable; urgency=low + + * debian/rules: Install main library in /lib (Closes: 350468, #549608) + * debian/pcre-config.1: Minor formatting changes (thanks Alexander + Peslyak) (Closes: 338658) + * Makefile.am,Makefile.in: Added libpcre.la to LDADD for various things; + apparently this will make it cross-build successfully (Closes: 492565) + * debian/control: Added ${misc:Depends} to dependencies for all the + binary packages + * debian/rules: Don't ignore errors from make distclean + + -- Mark Baker Wed, 07 Oct 2009 00:05:25 +0100 + +pcre3 (7.8-2) unstable; urgency=low + + * debian/rules: Bumped shlib version to 7.7 because of new feature in + that version (Closes: #500987) + + -- Mark Baker Sun, 05 Oct 2008 17:06:46 +0100 + +pcre3 (7.8-1) unstable; urgency=low + + * New upstream release + + -- Mark Baker Sun, 21 Sep 2008 21:23:00 +0100 + +pcre3 (7.6-2.1) unstable; urgency=high + + * Non-maintainer upload. + * Fix heap overflow in the pcre compiler triggered by + patterns which contain options and multiple branches + (CVE-2008-2371; Closes: #488919). + * debian/rules (patch by Bryan Donlan): Update shlibdeps invocation for + libpcrecpp0 due to new symbols (Closes: #476925). + * debian/copyright: replace license information with the current license + information shipped with upstream sources (Closes: #489318). + + -- Nico Golde Mon, 14 Jul 2008 19:13:11 +0200 + +pcre3 (7.6-2) unstable; urgency=low + + * pcrecpp.cc: Applied patch from PCRE bugzilla (bug 664) to fix ABI + breakage (Closes: #463170, #463266, #463413, #464974) + + -- Mark Baker Wed, 13 Feb 2008 22:19:35 +0000 + +pcre3 (7.6-1) unstable; urgency=low + + * New upstream release + * Ship pcredemo.c in examples directory (Closes: #377587) + + -- Mark Baker Mon, 28 Jan 2008 23:01:05 +0000 + +pcre3 (7.4-1) unstable; urgency=low + + * Build a -dbg package with debug symbols + + Thanks to Sebastian Dröge ,for all of the following: + + * New upstream release (Closes: #453372). + * debian/control, + debian/rules: + + Provide udeb (Closes: #443114). Build depend on debhelper (>= 5.0.22) + for this. + * debian/rules: + + Bump shlibs to >= 7.4 (Closes: #449289). + * debian/compat: + + Update debhelper compat level to 5. + * debian/control: + + Update Standards-Version to 3.7.3, no additional changes needed. + + Use ${binary:Version} instead of ${Source-Version} to make package + binNMU safe. + * debian/*.files, + debian/*.install, + debian/rules: + + Convert from dh_movefiles to dh_install. + * debian/*.dirs: + + Removed, not necessary. + + -- Mark Baker Mon, 7 Jan 2008 21:03:34 +0000 + +pcre3 (7.3-2) unstable; urgency=low + + * Overloaded RE::Init(), for compatibility with PCRE 6.x API (Closes + #436210). Thanks to Matthias Klose for the patch. + * Increased shlibdeps from 4.5 to 6.0. 6.0 introduced a new function + (pcre_compile2) to the API, so anything using that requires at least + 6.0. (Closes #441345) + + -- Mark Baker Mon, 7 Jan 2008 21:02:52 +0000 + +pcre3 (7.3-1) unstable; urgency=low + + * New upstream release + + -- Mark Baker Tue, 28 Aug 2007 20:53:39 +0100 + +pcre3 (7.2-1) unstable; urgency=low + + * New upstream release (Closes: #420280) + * debian/rules: dummy binary-indep target (Closes: #395730) + + -- Mark Baker Fri, 3 Aug 2007 23:06:28 +0100 + +pcre3 (6.7-1) unstable; urgency=low + + * New upstream release (Closes: #389305) + + -- Mark Baker Mon, 25 Sep 2006 23:24:55 +0100 + +pcre3 (6.4-2) unstable; urgency=low + + * Makefile.in: Install pcrepartial.3 (Closes: #362011) + * doc/pcreapi.3, doc/pcre_version.3: document pcre_version() as + returning a const char * not a char * (Closes: #278619) + * debian/libpcre3-dev.files: install libpcre.pc (Closes: #359662) + * doc/pcregrep.1: fixed typo (Closes: #310338) + * debian/control: drop dummy pgrep package (Closes: #247550) + + -- Mark Baker Thu, 27 Apr 2006 22:32:06 +0100 + +pcre3 (6.4-1.1) unstable; urgency=low + + * Split out the C++ library into it's own package libpcrecpp0, as + discussed in #339250. The C++ library was recently added, no + package references the C++ library yet. + Closes: #339250. + * debian/rules: Remove testsavedregex in clean target. + + -- Matthias Klose Fri, 25 Nov 2005 07:59:14 +0100 + +pcre3 (6.4-1) unstable; urgency=low + + * New upstream release (Closes: 333191) + + -- Mark Baker Mon, 10 Oct 2005 23:14:53 +0100 + +pcre3 (6.3-1) unstable; urgency=low + + * New upstream release (Closes: 323761). + * This includes fix to security issue CAN-2005-2491 (Closes: 324531) + + -- Mark Baker Sat, 27 Aug 2005 18:12:22 +0100 + +pcre3 (5.0-1.1) unstable; urgency=low + + * Non-maintainer upload. + * Correct an alignment error in the pcretest.c test case, which was + causing build failures on ia64 (closes: #309606). + + -- Steve Langasek Thu, 26 May 2005 05:15:34 +0000 + +pcre3 (5.0-1) unstable; urgency=low + + * New upstream release (Closes: #295287) + - compatible, so same soname and package name can be used. + * Compile with --enable-unicode-properties, a new feature of PCRE 5.0 + * Removed . from description in control file + * Included patch from Niibe Yutaka for cross building (Closes: #285407) + + Thanks Andreas for the NMU, which this is based on (Closes: #237644, #237265) + + -- Mark Baker Wed, 16 Feb 2005 21:47:14 +0000 + +pcre3 (4.5-1.1) unstable; urgency=low + + * NMU to fix rc-bugs. + * Update libtool related files to fix build-error on mips, keep original + config.in, as it is no generated file. (Closes: #237265) + * pcregrep replaces pgrep. (Closes: #237564) + * Bump shlibs, pcre 4.5 includes two new functions. + * Let pgrep's /usr/share/doc symlink point to the package it depends on, + pcregrep. + + -- Andreas Metzler Fri, 12 Mar 2004 13:23:02 +0100 + +pcre3 (4.5-1) unstable; urgency=low + + * New upstream release + + Thanks to Andreas Metzler for patches for all the following: + + * doc/pcregrep.1: added newline between synopsis for pcregrep and that + for zpcregrp (Closes: #197899) + * debian/control: Change package descriptions (Closes: #209904) + * debian/rules and others: Renamed pgrep package to pcregrep, to match + name of binary and avoid confusion with pgrep (which greps for + processes, and is in the procps package; a dummy pgrep package will + ease upgrades (Closes: #217076) + + -- Mark Baker Wed, 25 Feb 2004 20:49:33 +0000 + +pcre3 (4.3-4) unstable; urgency=low + + * debian/libpcre3.files: include pcrepattern(3) manpage in libpcre3 + package instead of libpcre3-dev package. This means that anyone using + a PCRE based application will have the man page available. + + -- Mark Baker Thu, 8 Jan 2004 21:19:51 +0000 + +pcre3 (4.3-3) unstable; urgency=low + + * ltmain.sh: Replaced with standard version from debian libtool package, + but with Phil Hazel's patch applied (although I suspect his patch + isn't necessary on debian systems). (Closes: #198147, #198668) I hope. + + -- Mark Baker Wed, 25 Jun 2003 21:09:22 +0100 + +pcre3 (4.3-2) unstable; urgency=low + + * pcretest.c: Cheat at test! Always print 40 instead of the size, + because the size varies on different architectures, and we don't + really want to fail the test because of this. + + -- Mark Baker Thu, 19 Jun 2003 21:00:39 +0100 + +pcre3 (4.3-1) unstable; urgency=low + + This release is entirely the work of Andreas Metzler . + Thanks Andreas. + + * new upstream version (Closes: 182570) + * this version apparently fixes infinite loop bug (Closes: 161184) + * repacked using debhelper and upstream's Makefile. Switch to libtool's + versioning scheme, see debian/README.Versioning.libtool for details. + (Closes: #187371) + * (however, don't ship .la files, they only give libtool strange ideas, see + http://lists.debian.org/debian-devel/2003/debian-devel-200304/msg00827.html + for an example.) + * changed compile-options to really follow policy 3.5.7 + * debian/control: changed description to say "Perl 5" as Perl 6, when it + eventually appears, will have yet another different regex syntax + (Closes: #166939) + + -- Mark Baker Mon, 16 Jun 2003 22:11:08 +0100 + +pcre3 (3.9-1) unstable; urgency=low + + * New upstream version (Closes: #119429, #161424) + * Added zpcregrep script by Samuel Tardieu (Closes: #36897) + * doc/pcregrep.1: mention zpcregrep + * debian/rules: use && in test rule rather than -a option to test, for + better POSIX compatibility (Closes: #158775) + * debian/Makefile: build pcretest once with -rpath for doing tests, and + once without, so that: + * debian/rules: install pcretest program (Closes: #162998) + * Don't create or remove /usr/doc/foo symlinks. This means that none of + the packages have prerms and only libpcre3 has a postinst + * debian/copyright: corrected to "Debian GNU/Linux" + * debian/control: standards version updated to 3.5.7.0 + * debian/rules: strip comment and note sections from libraries + * The result of the last four changes is that it should now be + lintian-clean apart from one caused by a known bug in lintian (see + lintian bug #117260) (Closes: #162999) + + -- Mark Baker Sat, 26 Oct 2002 18:12:13 +0100 + +pcre3 (3.4-1.1) unstable; urgency=high + + * Non-maintainer upload. + * Rebuild with a version of libc6 without a broken atexit() symbol + (closes: #108597, critical). + * Add to LD_LIBRARY_PATH rather than clobbering it, to avoid fakeroot + dying (closes: #108661, #108891). + + -- Colin Watson Sun, 19 Aug 2001 20:43:28 +0100 + +pcre3 (3.4-1) unstable; urgency=low + + * new upstream version (Closes: #93876) + + -- Mark Baker Sat, 28 Apr 2001 00:05:22 +0100 + +pcre3 (3.3-5) unstable; urgency=low + + * debian/rules: install pcregrep as that name (only) rather than as + pgrep with a symlink called pcregrep. This avoids a name clash with + the process table grepper also called pgrep. + * doc/pcregrep.1: change name of program being documented (back) to + pcregrep. + + -- Mark Baker Tue, 23 Jan 2001 23:54:08 +0000 + +pcre3 (3.3-4) unstable; urgency=low + + * debian/rules: only install config files that are meant to be installed + in libpcre3-dev package (Closes: #78354) + * debian/Makefile: distclean target clears up configure output + + -- Mark Baker Wed, 29 Nov 2000 23:59:19 +0000 + +pcre3 (3.3-3) unstable; urgency=low + + * debian/rules: make debian/Makefile executable before trying to run it + (Closes: #74316) + + -- Mark Baker Sun, 8 Oct 2000 21:18:15 +0100 + +pcre3 (3.3-2) unstable; urgency=low + + * debian/rules: pgrep should symlink to docs in /usr/doc/libpcre3, not + /usr/doc/libpcre2 + * debian/rules: manpage pgrep.1.gz should not be installed as executable! + * debian/rules: pcregrep.1.gz is symlink to pgrep.1.gz + * doc/pcre-config.1: basic manpage for pcre-config written + * debian/rules: install pcre-config.1 + * debian/rules: use -isp option to dpkg-gencontrol + + -- Mark Baker Tue, 22 Aug 2000 00:11:54 +0100 + +pcre3 (3.3-1) unstable; urgency=low + + * new package for pcre 3.x + + -- Mark Baker Sat, 19 Aug 2000 13:44:00 +0000 + +pcre2 (2.08-1) unstable; urgency=low + + What follows is the changelog from pcre2, up to the point where the pcre3 + package was made. + + * new upstream version (#50386) + * put -lc after -lpcre when linking libpcreposix (#50046) + + -- Mark Baker Thu, 18 Nov 1999 21:45:14 +0000 + +pcre2 (2.07-2) unstable; urgency=low + + * debian/rules: use /usr/share/doc and /usr/share/man, as mandated by + policy 3.1.0 + * debian/postinst: create /usr/doc symlink; don't install library + * debian/postinst-lib (new file): create /usr/doc symlink and install library + * debian/prerm: remove /usr/doc symlink + * debian/rules: install postinst and prerm for all packages; but + postinst-lib for library package + + -- Mark Baker Sat, 13 Nov 1999 18:57:59 +0000 + +pcre2 (2.07-1) unstable; urgency=low + + * new upstream version + * pcre.c, pcre.h: new upstream version is incompatible with old one! I've + done a nasty hack so that old binaries will still work. Old source won't, + but at least it won't fail silently so this shouldn't be a major problem. + * debian/rules: /usr/doc/pgrep should be a link to libpcre2, not libpcre1 + (#42450) + + -- Mark Baker Tue, 3 Aug 1999 23:58:35 +0100 + +pcre2 (2.05-1) unstable; urgency=low + + * new upstream version (#36776) + + -- Mark Baker Tue, 27 Apr 1999 23:00:25 +0100 + +pcre2 (2.02-3) unstable; urgency=low + + * pcre.3: removed description of regular expression syntax and semantics + * pcre.7: new file, containing material removed from above + (this is so it can be put in the libpcre2 package (#34087) + + -- Mark Baker Fri, 5 Mar 1999 01:08:47 +0000 + +pcre2 (2.02-2) unstable; urgency=low + + * debian/rules: install copyright in correct location in libpcre2-dev; + a typo before meant the package wouldn't install + * debian/shlibs: update to refer to libpcre2 instead of libpcre1 + + -- Mark Baker Fri, 29 Jan 1999 00:12:00 +0000 + +pcre2 (2.02-1) unstable; urgency=low + + * first release of pcre2 + * install source of pgrep (it's small) in /usr/doc/libpcre2-dev/examples + + -- Mark Baker Thu, 28 Jan 1999 00:45:00 +0000 + +pcre (1.09-2) unstable; urgency=low + + What follows is the changelog from pcre 1, up to the point where the pcre2 + package was made. + + The changes are not that large but the API, and therefore the ABI, are + changed so version 2 is not compatible. + + * pcreposix.c,pcreposix.h: prefixed function names with pcreposix_ + * pcreposix.h: #defines so un-prefixed names can be used + * These mean pcre routines will be used instead of the regex library + built into libc (#22525) + * debian/shlibs: pcreposix needs libpcre1 >=1.09-2 now + * debian/rules: it's not pcre 1.01 any more. + + -- Mark Baker Sat, 30 May 1998 16:54:31 +0100 + +pcre (1.09-1) unstable; urgency=low + + * New upstream version + + -- Mark Baker Sat, 28 Feb 1998 21:29:07 +0000 + +pcre (1.08-1) unstable; urgency=low + + * New upstream version (new features, so in unstable only) + + -- Mark Baker Sat, 28 Feb 1998 21:29:07 +0000 + +pcre (1.06-3) unstable; urgency=low + + * Strip pgrep + + -- Mark Baker Sat, 28 Feb 1998 21:29:07 +0000 + +pcre (1.06-2) unstable; urgency=low + + * Extended description for pgrep + * Compress manpage + * Updated standards-version to 2.4.0.0 + + -- Mark Baker Mon, 9 Feb 1998 23:56:15 +0000 + +pcre (1.06-1) unstable; urgency=low + + * New upstream version (bug fixes) + + -- Mark Baker Sun, 25 Jan 1998 22:37:37 +0000 + +pcre (1.05-2) unstable; urgency=low + + * Remove debian/*~ in clean target + * Only run ldconfig on "configure" + + -- Mark Baker Wed, 7 Jan 1998 21:14:51 +0000 + +pcre (1.05-1) unstable; urgency=low + + * New upstream version (bug fixes) + + -- Mark Baker Sat, 27 Dec 1997 11:26:32 +0000 + +pcre (1.02-1) unstable; urgency=low + + * New upstream version + + -- Mark Baker Sat, 13 Dec 1997 22:01:48 +0000 + +pcre (1.01-4) unstable; urgency=low + + * Use -fPIC instead of -fpic (identical on i386, but different on other + architectures like m68k) + * Nasty trick so pgrep gets the right dependencies whether or not + libpcre1 is installed + + -- Mark Baker Tue, 2 Dec 1997 17:57:07 +0000 + +pcre (1.01-3) unstable; urgency=low + + * Apply patch to manpage from Karl Hegbloom + * Rewritten makefile (copy sent upstream) + + -- Mark Baker Tue, 25 Nov 1997 12:12:05 +0000 + +pcre (1.01-2) unstable; urgency=low + + * Correct typo (libprce) in debian/rules + * Use gcc instead of ld in makefile + * Build static libraries + * Use shlibdeps instead of hard-coding libc6 + * Use --strip-unneeded when stripping + + -- Mark Baker Fri, 21 Nov 1997 23:52:06 +0000 + +pcre (1.01-1) unstable; urgency=low + + * Initial debian release + + -- Mark Baker Fri, 21 Nov 1997 20:36:13 +0000 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..8ce64d0 --- /dev/null +++ b/debian/control @@ -0,0 +1,117 @@ +Source: pcre3 +Section: libs +Priority: optional +Maintainer: Matthew Vernon +Standards-Version: 3.9.3 +Build-Depends: debhelper (>= 5.0.22), dpkg-dev (>= 1.16.0), dh-autoreconf + +Package: libpcre3 +Section: libs +Architecture: any +Priority: important +Depends: ${shlibs:Depends}, ${misc:Depends} +Conflicts: libpcre3-dev (<= 4.3-3) +Breaks: + libpcre-ocaml (<< 6.0.1~), + approx (<< 4.4-1~), + cmigrep (<< 1.5-7~), + ocsigen (<< 1.3.3-1~), + cduce (<< 0.5.3-2~), + galax (<< 1.1-7~), + liquidsoap (<< 0.9.2-3~) +Multi-Arch: same +Pre-Depends: multiarch-support +Description: Perl 5 Compatible Regular Expression Library - runtime files + This is a library of functions to support regular expressions whose syntax + and semantics are as close as possible to those of the Perl 5 language. + . + This package contains the runtime libraries. + +Package: libpcre3-udeb +Section: debian-installer +Package-Type: udeb +Architecture: any +Priority: important +Depends: ${shlibs:Depends}, ${misc:Depends} +Conflicts: libpcre3-dev (<= 4.3-3) +Description: Perl 5 Compatible Regular Expression Library - runtime files (udeb) + This is a library of functions to support regular expressions whose syntax + and semantics are as close as possible to those of the Perl 5 language. + . + This package contains the runtime libraries for the Debian Installer (udeb). + +Package: libpcrecpp0v5 +Section: libs +Architecture: any +Priority: optional +Depends: ${shlibs:Depends}, ${misc:Depends} +Conflicts: libpcre3 (<< 6.4-1.1), libpcrecpp0 +Replaces: libpcre3 (<< 6.4-1.1), libpcrecpp0 +Multi-Arch: same +Pre-Depends: multiarch-support +Description: Perl 5 Compatible Regular Expression Library - C++ runtime files + This is a C++ library of functions to support regular expressions whose syntax + and semantics are as close as possible to those of the Perl 5 language. + . + This package contains the C++ runtime library. + +Package: libpcre3-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: libc6-dev, libpcre3 (= ${binary:Version}), libpcre16-3 (= ${binary:Version}), libpcre32-3 (= ${binary:Version}), libpcrecpp0v5 (= ${binary:Version}), ${misc:Depends} +Description: Perl 5 Compatible Regular Expression Library - development files + This is a library of functions to support regular expressions whose syntax + and semantics are as close as possible to those of the Perl 5 language. + . + This package contains the development files, including headers, static + libraries, and documentation. + +Package: libpcre3-dbg +Section: debug +Priority: extra +Architecture: any +Depends: libpcre3 (= ${binary:Version}), libpcrecpp0v5 (= ${binary:Version}), ${misc:Depends} +Multi-Arch: same +Description: Perl 5 Compatible Regular Expression Library - debug symbols + This is a library of functions to support regular expressions whose syntax + and semantics are as close as possible to those of the Perl 5 language. + . + This package contains the debug symbols, + +Package: pcregrep +Section: utils +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Replaces: pgrep (<<4.5) +Description: grep utility that uses perl 5 compatible regexes. + Perl-style regexps have many useful features that the standard POSIX ones + don't; this is basically the same as grep but with the different + regexp syntax. + . + The other reason for the existence of pcregrep is that its source code is an + example of programming with libpcre. + +Package: libpcre16-3 +Section: libs +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Description: Perl 5 Compatible Regular Expression Library - 16 bit runtime files + This is a library of functions to support regular expressions whose syntax + and semantics are as close as possible to those of the Perl 5 language. + . + This package contains the 16 bit runtime library. + +Package: libpcre32-3 +Section: libs +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Description: Perl 5 Compatible Regular Expression Library - 32 bit runtime files + This is a library of functions to support regular expressions whose syntax + and semantics are as close as possible to those of the Perl 5 language. + . + This package contains the 32 bit runtime library. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..c589cd8 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,74 @@ +This is Debian GNU/Linux's prepackaged version of the PCRE regular +expression library and associated pgrep utility. + +This package was put together by me, Mark Baker from the +original sources obtained from ftp.csx.cam.ac.uk:/pub/software/programming/pcre. + +PCRE LICENCE +------------ + +PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + +Release 7 of PCRE is distributed under the terms of the "BSD" licence, as +specified below. The documentation for PCRE, supplied in the "doc" +directory, is distributed under the same terms as the software itself. + +The basic library functions are written in C and are freestanding. Also +included in the distribution is a set of C++ wrapper functions. + + +THE BASIC LIBRARY FUNCTIONS +--------------------------- + +Written by: Philip Hazel +Email local part: ph10 +Email domain: cam.ac.uk + +University of Cambridge Computing Service, +Cambridge, England. + +Copyright (c) 1997-2007 University of Cambridge +All rights reserved. + + +THE C++ WRAPPER FUNCTIONS +------------------------- + +Contributed by: Google Inc. + +Copyright (c) 2007, Google Inc. +All rights reserved. + + +THE "BSD" LICENCE +----------------- + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the name of Google + Inc. nor the names of their contributors may be used to endorse or + promote products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +End diff --git a/debian/dirs b/debian/dirs new file mode 100644 index 0000000..ca882bb --- /dev/null +++ b/debian/dirs @@ -0,0 +1,2 @@ +usr/bin +usr/sbin diff --git a/debian/jit-test b/debian/jit-test new file mode 100644 index 0000000..f133c26 --- /dev/null +++ b/debian/jit-test @@ -0,0 +1,8 @@ +#!/bin/sh + +arch=$(dpkg-architecture -qDEB_HOST_GNU_TYPE) + +$arch-gcc debian/jit-test.c -o/dev/null +if [ $? -eq 0 ]; then + echo "--enable-jit" +fi diff --git a/debian/jit-test.c b/debian/jit-test.c new file mode 100644 index 0000000..e476e08 --- /dev/null +++ b/debian/jit-test.c @@ -0,0 +1,17 @@ +// This little program runs the macros in the SLJIT header file +// which auto-detect architecture. This enables us to only attempt +// to use SLJIT on architectures that support it +// +#define SLJIT_CONFIG_AUTO 1 +#include "../sljit/sljitConfigInternal.h" + +#ifndef SLJIT_CONFIG_UNSUPPORTED + #warning JIT enabled +#else + #error JIT not supported +#endif + +int main(void) +{ + return 0; +} diff --git a/debian/libpcre16-3.install b/debian/libpcre16-3.install new file mode 100644 index 0000000..df85ecf --- /dev/null +++ b/debian/libpcre16-3.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/*/libpcre16.so.* diff --git a/debian/libpcre16-3.symbols.in b/debian/libpcre16-3.symbols.in new file mode 100644 index 0000000..551389b --- /dev/null +++ b/debian/libpcre16-3.symbols.in @@ -0,0 +1,34 @@ +libpcre16.so.3 libpcre16-3 #MINVER# + pcre16_assign_jit_stack@Base 2:8.35-4 + pcre16_callout@Base 2:8.35-4 + pcre16_compile2@Base 2:8.35-4 + pcre16_compile@Base 2:8.35-4 + pcre16_config@Base 2:8.35-4 + pcre16_copy_named_substring@Base 2:8.35-4 + pcre16_copy_substring@Base 2:8.35-4 + pcre16_dfa_exec@Base 2:8.35-4 + pcre16_exec@Base 2:8.35-4 + pcre16_free@Base 2:8.35-4 + pcre16_free_study@Base 2:8.35-4 + pcre16_free_substring@Base 2:8.35-4 + pcre16_free_substring_list@Base 2:8.35-4 + pcre16_fullinfo@Base 2:8.35-4 + pcre16_get_named_substring@Base 2:8.35-4 + pcre16_get_stringnumber@Base 2:8.35-4 + pcre16_get_stringtable_entries@Base 2:8.35-4 + pcre16_get_substring@Base 2:8.35-4 + pcre16_get_substring_list@Base 2:8.35-4 +JIT pcre16_jit_exec@Base 2:8.35-4 + pcre16_jit_free_unused_memory@Base 2:8.35-4 + pcre16_jit_stack_alloc@Base 2:8.35-4 + pcre16_jit_stack_free@Base 2:8.35-4 + pcre16_maketables@Base 2:8.35-4 + pcre16_malloc@Base 2:8.35-4 + pcre16_pattern_to_host_byte_order@Base 2:8.35-4 + pcre16_refcount@Base 2:8.35-4 + pcre16_stack_free@Base 2:8.35-4 + pcre16_stack_guard@Base 2:8.35-4 + pcre16_stack_malloc@Base 2:8.35-4 + pcre16_study@Base 2:8.35-4 + pcre16_utf16_to_host_byte_order@Base 2:8.35-4 + pcre16_version@Base 2:8.35-4 diff --git a/debian/libpcre3-dev.examples b/debian/libpcre3-dev.examples new file mode 100644 index 0000000..8b2d8a9 --- /dev/null +++ b/debian/libpcre3-dev.examples @@ -0,0 +1 @@ +pcredemo.c diff --git a/debian/libpcre3-dev.install b/debian/libpcre3-dev.install new file mode 100644 index 0000000..52ce644 --- /dev/null +++ b/debian/libpcre3-dev.install @@ -0,0 +1,6 @@ +debian/tmp/usr/include/* +debian/tmp/usr/lib/*/lib*.a +debian/tmp/usr/lib/*/lib*.so +debian/tmp/usr/lib/*/pkgconfig/* +debian/tmp/usr/bin/*-config +debian/tmp/usr/share/man/man3/* diff --git a/debian/libpcre3-dev.manpages b/debian/libpcre3-dev.manpages new file mode 100644 index 0000000..eee7a81 --- /dev/null +++ b/debian/libpcre3-dev.manpages @@ -0,0 +1,2 @@ +debian/pcre-config.1 + diff --git a/debian/libpcre3-udeb.install b/debian/libpcre3-udeb.install new file mode 100644 index 0000000..d46404c --- /dev/null +++ b/debian/libpcre3-udeb.install @@ -0,0 +1,2 @@ +debian/tmp/usr/lib/*/libpcre.so.* usr/lib +debian/tmp/usr/lib/*/libpcreposix.so.* usr/lib diff --git a/debian/libpcre3.docs b/debian/libpcre3.docs new file mode 100644 index 0000000..9920811 --- /dev/null +++ b/debian/libpcre3.docs @@ -0,0 +1,2 @@ +README AUTHORS NEWS + diff --git a/debian/libpcre3.install b/debian/libpcre3.install new file mode 100644 index 0000000..2166583 --- /dev/null +++ b/debian/libpcre3.install @@ -0,0 +1,3 @@ +debian/tmp/usr/lib/*/libpcre.so.* +debian/tmp/usr/lib/*/libpcreposix.so.* +debian/tmp/usr/share/man/man3/pcrepattern.3 diff --git a/debian/libpcre3.symbols.in b/debian/libpcre3.symbols.in new file mode 100644 index 0000000..29968c8 --- /dev/null +++ b/debian/libpcre3.symbols.in @@ -0,0 +1,39 @@ +libpcre.so.3 libpcre3 + pcre_assign_jit_stack@Base 8.10 + pcre_callout@Base 8.10 + pcre_compile2@Base 8.10 + pcre_compile@Base 8.10 + pcre_config@Base 8.10 + pcre_copy_named_substring@Base 8.10 + pcre_copy_substring@Base 8.10 + pcre_dfa_exec@Base 8.10 + pcre_exec@Base 8.10 + pcre_free@Base 8.10 + pcre_free_study@Base 8.20 + pcre_free_substring@Base 8.10 + pcre_free_substring_list@Base 8.10 + pcre_fullinfo@Base 8.10 + pcre_get_named_substring@Base 8.10 + pcre_get_stringnumber@Base 8.10 + pcre_get_stringtable_entries@Base 8.10 + pcre_get_substring@Base 8.10 + pcre_get_substring_list@Base 8.10 + pcre_info@Base 8.10 +JIT pcre_jit_exec@Base 1:8.35 + pcre_jit_free_unused_memory@Base 1:8.35 + pcre_jit_stack_alloc@Base 8.10 + pcre_jit_stack_free@Base 8.10 + pcre_maketables@Base 8.10 + pcre_malloc@Base 8.10 + pcre_pattern_to_host_byte_order@Base 8.10 + pcre_refcount@Base 8.10 + pcre_stack_free@Base 8.10 + pcre_stack_guard@Base 1:8.35 + pcre_stack_malloc@Base 8.10 + pcre_study@Base 8.10 + pcre_version@Base 8.10 +libpcreposix.so.3 libpcre3 + pcreposix_regcomp@Base 8.10 + pcreposix_regerror@Base 8.10 + pcreposix_regexec@Base 8.10 + pcreposix_regfree@Base 8.10 diff --git a/debian/libpcre32-3.install b/debian/libpcre32-3.install new file mode 100644 index 0000000..f91755e --- /dev/null +++ b/debian/libpcre32-3.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/*/libpcre32.so.* diff --git a/debian/libpcre32-3.symbols.in b/debian/libpcre32-3.symbols.in new file mode 100644 index 0000000..1ab979f --- /dev/null +++ b/debian/libpcre32-3.symbols.in @@ -0,0 +1,34 @@ +libpcre32.so.3 libpcre32-3 #MINVER# + pcre32_assign_jit_stack@Base 2:8.35-4 + pcre32_callout@Base 2:8.35-4 + pcre32_compile2@Base 2:8.35-4 + pcre32_compile@Base 2:8.35-4 + pcre32_config@Base 2:8.35-4 + pcre32_copy_named_substring@Base 2:8.35-4 + pcre32_copy_substring@Base 2:8.35-4 + pcre32_dfa_exec@Base 2:8.35-4 + pcre32_exec@Base 2:8.35-4 + pcre32_free@Base 2:8.35-4 + pcre32_free_study@Base 2:8.35-4 + pcre32_free_substring@Base 2:8.35-4 + pcre32_free_substring_list@Base 2:8.35-4 + pcre32_fullinfo@Base 2:8.35-4 + pcre32_get_named_substring@Base 2:8.35-4 + pcre32_get_stringnumber@Base 2:8.35-4 + pcre32_get_stringtable_entries@Base 2:8.35-4 + pcre32_get_substring@Base 2:8.35-4 + pcre32_get_substring_list@Base 2:8.35-4 +JIT pcre32_jit_exec@Base 2:8.35-4 + pcre32_jit_free_unused_memory@Base 2:8.35-4 + pcre32_jit_stack_alloc@Base 2:8.35-4 + pcre32_jit_stack_free@Base 2:8.35-4 + pcre32_maketables@Base 2:8.35-4 + pcre32_malloc@Base 2:8.35-4 + pcre32_pattern_to_host_byte_order@Base 2:8.35-4 + pcre32_refcount@Base 2:8.35-4 + pcre32_stack_free@Base 2:8.35-4 + pcre32_stack_guard@Base 2:8.35-4 + pcre32_stack_malloc@Base 2:8.35-4 + pcre32_study@Base 2:8.35-4 + pcre32_utf32_to_host_byte_order@Base 2:8.35-4 + pcre32_version@Base 2:8.35-4 diff --git a/debian/libpcrecpp0v5.docs b/debian/libpcrecpp0v5.docs new file mode 100644 index 0000000..9920811 --- /dev/null +++ b/debian/libpcrecpp0v5.docs @@ -0,0 +1,2 @@ +README AUTHORS NEWS + diff --git a/debian/libpcrecpp0v5.install b/debian/libpcrecpp0v5.install new file mode 100644 index 0000000..6b2eb62 --- /dev/null +++ b/debian/libpcrecpp0v5.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/*/libpcrecpp.so.* diff --git a/debian/libpcrecpp0v5.symbols b/debian/libpcrecpp0v5.symbols new file mode 100644 index 0000000..471ec7c --- /dev/null +++ b/debian/libpcrecpp0v5.symbols @@ -0,0 +1,87 @@ +libpcrecpp.so.0 libpcrecpp0v5 #MINVER# + (c++)"operator<<(std::basic_ostream >&, pcrecpp::StringPiece const&)@Base" 8.38 + (c++)"pcrecpp::Arg::parse_char(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_double(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_float(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_int(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_int_cradix(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_int_hex(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_int_octal(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_int_radix(char const*, int, void*, int)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_long(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_long_cradix(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_long_hex(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_longlong(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_longlong_cradix(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_longlong_hex(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_longlong_octal(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_longlong_radix(char const*, int, void*, int)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_long_octal(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_long_radix(char const*, int, void*, int)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_null(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_short(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_short_cradix(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_short_hex(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_short_octal(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_short_radix(char const*, int, void*, int)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_string(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_stringpiece(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_uchar(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_uint(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_uint_cradix(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_uint_hex(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_uint_octal(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_uint_radix(char const*, int, void*, int)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ulong(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ulong_cradix(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ulong_hex(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ulonglong(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ulonglong_cradix(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ulonglong_hex(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ulonglong_octal(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ulonglong_radix(char const*, int, void*, int)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ulong_octal(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ulong_radix(char const*, int, void*, int)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ushort(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ushort_cradix(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ushort_hex(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ushort_octal(char const*, int, void*)@Base" 7.7 + (c++)"pcrecpp::Arg::parse_ushort_radix(char const*, int, void*, int)@Base" 7.7 + (c++)"pcrecpp::RE::Cleanup()@Base" 7.7 + (c++)"pcrecpp::RE::Compile(pcrecpp::RE::Anchor)@Base" 7.7 + (c++)"pcrecpp::RE::Consume(pcrecpp::StringPiece*, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&) const@Base" 7.7 + (c++)"pcrecpp::Scanner::Consume(pcrecpp::RE const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&)@Base" 7.7 + (c++)"pcrecpp::RE::DoMatchImpl(pcrecpp::StringPiece const&, pcrecpp::RE::Anchor, int*, pcrecpp::Arg const* const*, int, int*, int) const@Base" 7.7 + (c++)"pcrecpp::RE::DoMatch(pcrecpp::StringPiece const&, pcrecpp::RE::Anchor, int*, pcrecpp::Arg const* const*, int) const@Base" 7.7 + (c++)"pcrecpp::RE::Extract(pcrecpp::StringPiece const&, pcrecpp::StringPiece const&, std::__cxx11::basic_string, std::allocator >*) const@Base" 7.7 + (c++)"pcrecpp::RE::FindAndConsume(pcrecpp::StringPiece*, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&) const@Base" 7.7 + (c++)"pcrecpp::RE::FullMatch(pcrecpp::StringPiece const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&) const@Base" 7.7 + (c++)"pcrecpp::RE::GlobalReplace(pcrecpp::StringPiece const&, std::__cxx11::basic_string, std::allocator >*) const@Base" 7.7 + (c++)"pcrecpp::RE::Init(char const*, pcrecpp::RE_Options const*)@Base" 7.7 + (c++)"pcrecpp::RE::Init(std::__cxx11::basic_string, std::allocator > const&, pcrecpp::RE_Options const*)@Base" 7.7 + (c++)"pcrecpp::RE::no_arg@Base" 7.7 + (c++)"pcrecpp::RE::NumberOfCapturingGroups() const@Base" 7.7 + (c++)"pcrecpp::RE::PartialMatch(pcrecpp::StringPiece const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&, pcrecpp::Arg const&) const@Base" 7.7 + (c++)"pcrecpp::RE::QuoteMeta[abi:cxx11](pcrecpp::StringPiece const&)@Base" 7.7 + (c++)"pcrecpp::RE::~RE()@Base" 7.7 + (c++)"pcrecpp::RE::~RE()@Base" 7.7 + (c++)"pcrecpp::RE::Replace(pcrecpp::StringPiece const&, std::__cxx11::basic_string, std::allocator >*) const@Base" 7.7 + (c++)"pcrecpp::RE::Rewrite(std::__cxx11::basic_string, std::allocator >*, pcrecpp::StringPiece const&, pcrecpp::StringPiece const&, int*, int) const@Base" 7.7 + (c++)"pcrecpp::RE::TryMatch(pcrecpp::StringPiece const&, int, pcrecpp::RE::Anchor, bool, int*, int) const@Base" 7.7 + (c++)"pcrecpp::Scanner::ConsumeSkip()@Base" 7.7 + (c++)"pcrecpp::Scanner::DisableSkip()@Base" 7.7 + (c++)"pcrecpp::Scanner::EnableSkip()@Base" 7.7 + (c++)"pcrecpp::Scanner::GetComments(int, int, std::vector >*)@Base" 7.7 + (c++)"pcrecpp::Scanner::GetNextComments(std::vector >*)@Base" 7.7 + (c++)"pcrecpp::Scanner::LineNumber() const@Base" 7.7 + (c++)"pcrecpp::Scanner::LookingAt(pcrecpp::RE const&) const@Base" 7.7 + (c++)"pcrecpp::Scanner::Offset() const@Base" 7.7 + (c++)"pcrecpp::Scanner::~Scanner()@Base" 7.7 + (c++)"pcrecpp::Scanner::~Scanner()@Base" 7.7 + (c++)"pcrecpp::Scanner::Scanner()@Base" 7.7 + (c++)"pcrecpp::Scanner::Scanner()@Base" 7.7 + (c++)"pcrecpp::Scanner::Scanner(std::__cxx11::basic_string, std::allocator > const&)@Base" 7.7 + (c++)"pcrecpp::Scanner::Scanner(std::__cxx11::basic_string, std::allocator > const&)@Base" 7.7 + (c++)"pcrecpp::Scanner::SetSkipExpression(char const*)@Base" 7.7 + (c++)"pcrecpp::Scanner::Skip(char const*)@Base" 7.7 + (c++)"std::vector >::_M_insert_aux(__gnu_cxx::__normal_iterator > >, pcrecpp::StringPiece const&)@Base" 7.7 diff --git a/debian/patches/794589-information-disclosure.patch b/debian/patches/794589-information-disclosure.patch new file mode 100644 index 0000000..b3aba7f --- /dev/null +++ b/debian/patches/794589-information-disclosure.patch @@ -0,0 +1,30 @@ +Description: pcre_exec does not fill offsets for certain regexps +Origin: upstream, http://vcs.pcre.org/pcre/code/trunk/pcre_exec.c?r1=1502&r2=1510 +Bug: https://bugs.exim.org/show_bug.cgi?id=1537 +Bug-Debian: https://bugs.debian.org/794589 +Forwarded: not-needed +Last-Update: 2015-09-10 +Applied-Upstream: 8.37 + +--- a/pcre_exec.c ++++ b/pcre_exec.c +@@ -1467,7 +1467,18 @@ for (;;) + md->offset_vector[offset] = + md->offset_vector[md->offset_end - number]; + md->offset_vector[offset+1] = (int)(eptr - md->start_subject); +- if (offset_top <= offset) offset_top = offset + 2; ++ ++ /* If this group is at or above the current highwater mark, ensure that ++ any groups between the current high water mark and this group are marked ++ unset and then update the high water mark. */ ++ ++ if (offset >= offset_top) ++ { ++ register int *iptr = md->offset_vector + offset_top; ++ register int *iend = md->offset_vector + offset; ++ while (iptr < iend) *iptr++ = -1; ++ offset_top = offset + 2; ++ } + } + ecode += 1 + IMM2_SIZE; + break; diff --git a/debian/patches/CVE-2016-1283.patch b/debian/patches/CVE-2016-1283.patch new file mode 100644 index 0000000..f05535b --- /dev/null +++ b/debian/patches/CVE-2016-1283.patch @@ -0,0 +1,47 @@ +From b7537308b7c758f33c347cb0bec62754c43c271f Mon Sep 17 00:00:00 2001 +From: ph10 +Date: Sat, 27 Feb 2016 17:38:11 +0000 +Subject: [PATCH] Yet another duplicate name bugfix by overestimating the + memory needed (i.e. another hack - PCRE2 has this "properly" fixed). + +git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1636 2f5784b3-3f2a-0410-8824-cb99058d5e15 +--- + pcre_compile.c | 7 ++++++- + testdata/testinput2 | 2 ++ + testdata/testoutput2 | 2 ++ + 4 files changed, 17 insertions(+), 1 deletion(-) + +--- a/pcre_compile.c ++++ b/pcre_compile.c +@@ -7289,7 +7289,12 @@ for (;; ptr++) + 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 ++ /* This patch (removing "else") fixes a problem when a reference is ++ to multiple identically named nested groups from within the nest. ++ Once again, it is not the "proper" fix, and it results in an ++ over-allocation of memory. */ ++ ++ /* else */ + { + ng = cd->named_groups; + for (i = 0; i < cd->names_found; i++, ng++) +--- a/testdata/testinput2 ++++ b/testdata/testinput2 +@@ -4217,4 +4217,6 @@ backtracking verbs. --/ + + /a[[:punct:]b]/BZ + ++/((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/ ++ + /-- End of testinput2 --/ +--- a/testdata/testoutput2 ++++ b/testdata/testoutput2 +@@ -14574,4 +14574,6 @@ No match + End + ------------------------------------------------------------------ + ++/((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/ ++ + /-- End of testinput2 --/ diff --git a/debian/patches/Disable_JIT_on_sparc64.patch b/debian/patches/Disable_JIT_on_sparc64.patch new file mode 100644 index 0000000..0a6de34 --- /dev/null +++ b/debian/patches/Disable_JIT_on_sparc64.patch @@ -0,0 +1,23 @@ +Description: Disable JIT on sparc64 as it needs explicit porting + The test suite currently fails on sparc64 when the JIT is enabled + as the JIT has not been ported to sparc64 yet. Thus, disable JIT + until it has been explicitly ported to sparc64. + . + +Index: pcre3/sljit/sljitConfigInternal.h +=================================================================== +--- pcre3.orig/sljit/sljitConfigInternal.h 2015-12-22 13:30:50.000000000 +0000 ++++ pcre3/sljit/sljitConfigInternal.h 2015-12-22 13:33:30.000000000 +0000 +@@ -145,7 +145,11 @@ + #elif defined(__mips64) + #define SLJIT_CONFIG_MIPS_64 1 + #elif defined(__sparc__) || defined(__sparc) +-#define SLJIT_CONFIG_SPARC_32 1 ++# if defined(__arch64__) ++# define SLJIT_CONFIG_UNSUPPORTED 1 ++# else ++# define SLJIT_CONFIG_SPARC_32 1 ++# endif + #elif defined(__tilegx__) + #define SLJIT_CONFIG_TILEGX 1 + #else diff --git a/debian/patches/Fix-bad-compilation-for-patterns-like-1-1-with-forwa.patch b/debian/patches/Fix-bad-compilation-for-patterns-like-1-1-with-forwa.patch new file mode 100644 index 0000000..ed5b5c1 --- /dev/null +++ b/debian/patches/Fix-bad-compilation-for-patterns-like-1-1-with-forwa.patch @@ -0,0 +1,145 @@ +Description: CVE-2015-2326: heap buffer overflow in pcre_compile2() + Fix bad compilation for patterns like /((?+1)(\1))/ with + forward reference subroutine and recursive back reference within the same + group. +Origin: upstream, http://vcs.pcre.org/pcre?view=revision&revision=1529 +Bug: http://bugs.exim.org/show_bug.cgi?id=1592 +Bug-Debian: https://bugs.debian.org/783285 +Forwarded: not-needed +Last-Update: 2015-09-10 +Applied-Upstream: 8.36 + +--- a/pcre_compile.c ++++ b/pcre_compile.c +@@ -8027,6 +8027,7 @@ int length; + unsigned int orig_bracount; + unsigned int max_bracount; + branch_chain bc; ++size_t save_hwm_offset; + + /* If set, call the external function that checks for stack availability. */ + +@@ -8044,6 +8045,8 @@ bc.current_branch = code; + firstchar = reqchar = 0; + firstcharflags = reqcharflags = 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 +@@ -8246,7 +8249,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; +--- a/testdata/testinput11 ++++ b/testdata/testinput11 +@@ -134,4 +134,6 @@ is required for these tests. --/ + + /(((a\2)|(a*)\g<-1>))*a?/B + ++/((?+1)(\1))/B ++ + /-- End of testinput11 --/ +--- a/testdata/testinput2 ++++ b/testdata/testinput2 +@@ -4066,4 +4066,6 @@ backtracking verbs. --/ + + "((?2){0,1999}())?" + ++/((?+1)(\1))/BZ ++ + /-- End of testinput2 --/ +--- a/testdata/testoutput11-16 ++++ b/testdata/testoutput11-16 +@@ -733,4 +733,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 --/ +--- a/testdata/testoutput11-32 ++++ b/testdata/testoutput11-32 +@@ -733,4 +733,19 @@ Memory allocation (code space): 28 + 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 --/ +--- a/testdata/testoutput11-8 ++++ b/testdata/testoutput11-8 +@@ -733,4 +733,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 --/ +--- a/testdata/testoutput2 ++++ b/testdata/testoutput2 +@@ -14175,4 +14175,19 @@ Failed: parentheses are too deeply neste + + "((?2){0,1999}())?" + ++/((?+1)(\1))/BZ ++------------------------------------------------------------------ ++ Bra ++ Once ++ CBra 1 ++ Recurse ++ CBra 2 ++ \1 ++ Ket ++ Ket ++ Ket ++ Ket ++ End ++------------------------------------------------------------------ ++ + /-- End of testinput2 --/ diff --git a/debian/patches/Fix-bad-compile-for-groups-like-2-0-1999.patch b/debian/patches/Fix-bad-compile-for-groups-like-2-0-1999.patch new file mode 100644 index 0000000..f019be6 --- /dev/null +++ b/debian/patches/Fix-bad-compile-for-groups-like-2-0-1999.patch @@ -0,0 +1,209 @@ +Description: CVE-2015-2325: heap buffer overflow in compile_branch() + Fix bad compile for groups like "((?2){0,1999}())?". +Origin: backport, http://vcs.pcre.org/pcre?view=revision&revision=1528 +Bug: http://bugs.exim.org/show_bug.cgi?id=1591 +Bug-Debian: https://bugs.debian.org/781795 +Forwarded: not-needed +Last-Update: 2015-09-10 +Applied-Upstream: 8.37 + +--- a/pcre_compile.c ++++ b/pcre_compile.c +@@ -3933,14 +3933,14 @@ Arguments: + adjust the amount by which the group is to be moved + utf TRUE in UTF-8 / UTF-16 / UTF-32 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; + +@@ -3952,7 +3952,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 = (int)GET(hc, 0); + if (cd->start_code + offset == ptr + 1) +@@ -4397,7 +4398,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 +@@ -5909,7 +5910,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) +@@ -5933,7 +5934,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; +@@ -5996,26 +5997,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; + } + } +@@ -6060,7 +6060,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; + +@@ -6082,22 +6082,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; + } + +@@ -6193,7 +6192,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; +@@ -6327,7 +6326,7 @@ for (;; ptr++) + else + { + *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; +@@ -6376,7 +6375,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; +@@ -6408,7 +6407,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 '*'. */ +@@ -7701,7 +7700,7 @@ for (;; ptr++) + const pcre_uchar *p; + pcre_uint32 cf; + +- 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; + +@@ -8247,7 +8246,7 @@ for (;;) + { + *code = OP_END; + adjust_recurse(start_bracket, 1 + LINK_SIZE, +- (options & PCRE_UTF8) != 0, cd, cd->hwm); ++ (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; +--- a/testdata/testinput2 ++++ b/testdata/testinput2 +@@ -4064,4 +4064,6 @@ backtracking verbs. --/ + + /(((((a)))))/Q + ++"((?2){0,1999}())?" ++ + /-- End of testinput2 --/ +--- a/testdata/testoutput2 ++++ b/testdata/testoutput2 +@@ -14173,4 +14173,6 @@ Failed: parentheses are too deeply neste + /(((((a)))))/Q + ** Missing 0 or 1 after /Q + ++"((?2){0,1999}())?" ++ + /-- End of testinput2 --/ diff --git a/debian/patches/Fix-buffer-overflow-for-named-recursive-back-referen.patch b/debian/patches/Fix-buffer-overflow-for-named-recursive-back-referen.patch new file mode 100644 index 0000000..3c4132b --- /dev/null +++ b/debian/patches/Fix-buffer-overflow-for-named-recursive-back-referen.patch @@ -0,0 +1,59 @@ +Description: CVE-2015-3210: heap buffer overflow in pcre_compile2() / compile_regex() + Fix buffer overflow for named recursive back reference when + the name is duplicated. +Origin: upstream, http://vcs.pcre.org/pcre?view=revision&revision=1558 +Bug: https://bugs.exim.org/show_bug.cgi?id=1636 +Bug-Debian: https://bugs.debian.org/787433 +Forwarded: not-needed +Last-Update: 2015-09-10 +Applied-Upstream: not-yet (8.38) + +--- a/pcre_compile.c ++++ b/pcre_compile.c +@@ -7082,14 +7082,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. */ + +--- a/testdata/testinput2 ++++ b/testdata/testinput2 +@@ -4068,4 +4068,6 @@ backtracking verbs. --/ + + /((?+1)(\1))/BZ + ++"(?J)(?'d'(?'d'\g{d}))" ++ + /-- End of testinput2 --/ +--- a/testdata/testoutput2 ++++ b/testdata/testoutput2 +@@ -14190,4 +14190,6 @@ Failed: parentheses are too deeply neste + End + ------------------------------------------------------------------ + ++"(?J)(?'d'(?'d'\g{d}))" ++ + /-- End of testinput2 --/ diff --git a/debian/patches/Fix-compile-time-loop-for-recursive-reference-within.patch b/debian/patches/Fix-compile-time-loop-for-recursive-reference-within.patch new file mode 100644 index 0000000..a38be27 --- /dev/null +++ b/debian/patches/Fix-compile-time-loop-for-recursive-reference-within.patch @@ -0,0 +1,86 @@ +Description: PCRE Call Stack Overflow Vulnerability + Fix compile-time loop for recursive reference within a group + with an indefinite repeat. +Origin: backport, http://vcs.pcre.org/pcre?view=revision&revision=1498 +Bug: https://bugs.exim.org/show_bug.cgi?id=1515 +Forwarded: not-needed +Last-Update: 2015-09-10 +Applied-Upstream: 8.36 + +--- a/pcre_compile.c ++++ b/pcre_compile.c +@@ -2367,6 +2367,7 @@ for (code = first_significant_code(code + if (c == OP_RECURSE) + { + const pcre_uchar *scode = cd->start_code + GET(code, 1); ++ const pcre_uchar *endgroup = scode; + BOOL empty_branch; + + /* Test for forward reference or uncompleted reference. This is disabled +@@ -2381,24 +2382,20 @@ for (code = first_significant_code(code + if (GET(scode, 1) == 0) return TRUE; /* Unclosed */ + } + +- /* If we are scanning a completed pattern, there are no forward references +- and all groups are complete. We need to detect whether this is a recursive +- call, as otherwise there will be an infinite loop. If it is a recursion, +- just skip over it. Simple recursions are easily detected. For mutual +- recursions we keep a chain on the stack. */ ++ /* If the reference is to a completed group, we need to detect whether this ++ is a recursive call, as otherwise there will be an infinite loop. If it is ++ a recursion, just skip over it. Simple recursions are easily detected. For ++ mutual recursions we keep a chain on the stack. */ + ++ do endgroup += GET(endgroup, 1); while (*endgroup == OP_ALT); ++ if (code >= scode && code <= endgroup) continue; /* Simple recursion */ + else +- { ++ { + recurse_check *r = recurses; +- const pcre_uchar *endgroup = scode; +- +- do endgroup += GET(endgroup, 1); while (*endgroup == OP_ALT); +- if (code >= scode && code <= endgroup) continue; /* Simple recursion */ +- + for (r = recurses; r != NULL; r = r->prev) + if (r->group == scode) break; + if (r != NULL) continue; /* Mutual recursion */ +- } ++ } + + /* Completed reference; scan the referenced group, remembering it on the + stack chain to detect mutual recursions. */ +--- a/testdata/testinput1 ++++ b/testdata/testinput1 +@@ -4937,6 +4937,12 @@ however, we need the complication for Pe + + /((?(R1)a+|(?1)b))/ + aaaabcde ++ ++/((?(R)a|(?1)))*/ ++ aaa ++ ++/((?(R)a|(?1)))+/ ++ aaa + + /a(*:any + name)/K +--- a/testdata/testoutput1 ++++ b/testdata/testoutput1 +@@ -8234,6 +8234,16 @@ MK: M + aaaabcde + 0: aaaab + 1: aaaab ++ ++/((?(R)a|(?1)))*/ ++ aaa ++ 0: aaa ++ 1: a ++ ++/((?(R)a|(?1)))+/ ++ aaa ++ 0: aaa ++ 1: a + + /a(*:any + name)/K diff --git a/debian/patches/Fix-compiler-crash-misbehaviour-for-zero-repeated-gr.patch b/debian/patches/Fix-compiler-crash-misbehaviour-for-zero-repeated-gr.patch new file mode 100644 index 0000000..a8c15f3 --- /dev/null +++ b/debian/patches/Fix-compiler-crash-misbehaviour-for-zero-repeated-gr.patch @@ -0,0 +1,175 @@ +Description: PCRE Library Stack Overflow Vulnerability + Fix compiler crash/misbehaviour for zero-repeated groups that + include a recursive back reference. +Origin: backport, http://vcs.pcre.org/pcre?view=revision&revision=1495 +Bug: https://bugs.exim.org/show_bug.cgi?id=1503 +Forwarded: not-needed +Last-Update: 2015-09-10 +Applied-Upstream: 8.36 +--- +--- a/pcre_compile.c ++++ b/pcre_compile.c +@@ -8241,12 +8241,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); + memmove(start_bracket + 1 + LINK_SIZE, start_bracket, + IN_UCHARS(code - start_bracket)); + *start_bracket = OP_ONCE; +--- a/testdata/testinput11 ++++ b/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 --/ +--- a/testdata/testinput2 ++++ b/testdata/testinput2 +@@ -4035,6 +4035,8 @@ backtracking verbs. --/ + + /(?(R&6yh)abc)/ + ++/(((a\2)|(a*)\g<-1>))*a?/BZ ++ + /-- Test the ugly "start or end of word" compatibility syntax --/ + + /[[:<:]]red[[:>:]]/BZ +--- a/testdata/testoutput11-16 ++++ b/testdata/testoutput11-16 +@@ -709,4 +709,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 --/ +--- a/testdata/testoutput11-32 ++++ b/testdata/testoutput11-32 +@@ -709,4 +709,28 @@ Memory allocation (code space): 28 + 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 --/ +--- a/testdata/testoutput11-8 ++++ b/testdata/testoutput11-8 +@@ -709,4 +709,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 --/ +--- a/testdata/testoutput2 ++++ b/testdata/testoutput2 +@@ -14093,6 +14093,30 @@ Failed: malformed number or name after ( + /(?(R&6yh)abc)/ + Failed: group name must start with a non-digit at offset 5 + ++/(((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 ++------------------------------------------------------------------ ++ + /-- Test the ugly "start or end of word" compatibility syntax --/ + + /[[:<:]]red[[:>:]]/BZ diff --git a/debian/patches/Fix-silly-quantifier-size-check.patch b/debian/patches/Fix-silly-quantifier-size-check.patch new file mode 100644 index 0000000..88c3b95 --- /dev/null +++ b/debian/patches/Fix-silly-quantifier-size-check.patch @@ -0,0 +1,100 @@ +From: Philip Hazel +Date: Mon, 21 Apr 2014 16:11:50 +0000 +Subject: Fix silly quantifier size check + +The tests for quantifiers being too big (greater than 65535) were being +applied after reading the number, and stupidly assuming that integer +overflow would give a negative number. The tests are now applied as the +numbers are read. + +Bug: http://bugs.exim.org/show_bug.cgi?id=1463 +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=751828 +Origin: upstream, part of http://vcs.pcre.org/viewvc?view=revision&sortby=date&revision=1472 +Applied-upstream: 8.36 +--- + pcre_compile.c | 35 ++++++++++++++++------------------- + testdata/testoutput2 | 6 +++--- + 2 files changed, 19 insertions(+), 22 deletions(-) + +diff --git a/pcre_compile.c b/pcre_compile.c +index 8a5b723..ae0027b 100644 +--- a/pcre_compile.c ++++ b/pcre_compile.c +@@ -1583,30 +1583,30 @@ read_repeat_counts(const pcre_uchar *p, int *minp, int *maxp, int *errorcodeptr) + int min = 0; + int max = -1; + +-/* Read the minimum value and do a paranoid check: a negative value indicates +-an integer overflow. */ +- +-while (IS_DIGIT(*p)) min = min * 10 + (int)(*p++ - CHAR_0); +-if (min < 0 || min > 65535) ++while (IS_DIGIT(*p)) + { +- *errorcodeptr = ERR5; +- return p; +- } +- +-/* Read the maximum value if there is one, and again do a paranoid on its size. +-Also, max must not be less than min. */ ++ min = min * 10 + (int)(*p++ - CHAR_0); ++ if (min > 65535) ++ { ++ *errorcodeptr = ERR5; ++ return p; ++ } ++ } + + if (*p == CHAR_RIGHT_CURLY_BRACKET) max = min; else + { + if (*(++p) != CHAR_RIGHT_CURLY_BRACKET) + { + max = 0; +- while(IS_DIGIT(*p)) max = max * 10 + (int)(*p++ - CHAR_0); +- if (max < 0 || max > 65535) ++ while(IS_DIGIT(*p)) + { +- *errorcodeptr = ERR5; +- return p; +- } ++ max = max * 10 + (int)(*p++ - CHAR_0); ++ if (max > 65535) ++ { ++ *errorcodeptr = ERR5; ++ return p; ++ } ++ } + if (max < min) + { + *errorcodeptr = ERR4; +@@ -1615,9 +1615,6 @@ if (*p == CHAR_RIGHT_CURLY_BRACKET) max = min; else + } + } + +-/* Fill in the required variables, and pass back the pointer to the terminating +-'}'. */ +- + *minp = min; + *maxp = max; + return p; +diff --git a/testdata/testoutput2 b/testdata/testoutput2 +index b6da7df..cfb446e 100644 +--- a/testdata/testoutput2 ++++ b/testdata/testoutput2 +@@ -5821,13 +5821,13 @@ No match + No match + + /a{11111111111111111111}/I +-Failed: number too big in {} quantifier at offset 22 ++Failed: number too big in {} quantifier at offset 8 + + /(){64294967295}/I +-Failed: number too big in {} quantifier at offset 14 ++Failed: number too big in {} quantifier at offset 9 + + /(){2,4294967295}/I +-Failed: number too big in {} quantifier at offset 15 ++Failed: number too big in {} quantifier at offset 11 + + "(?i:a)(?i:b)(?i:c)(?i:d)(?i:e)(?i:f)(?i:g)(?i:h)(?i:i)(?i:j)(k)(?i:l)A\1B"I + Capturing subpattern count = 1 diff --git a/debian/patches/PCRE6_compatible_API.patch b/debian/patches/PCRE6_compatible_API.patch new file mode 100644 index 0000000..f13a763 --- /dev/null +++ b/debian/patches/PCRE6_compatible_API.patch @@ -0,0 +1,40 @@ +From: Mark Baker +Description: Include old interface to RE::Init() for PCRE 6.x compatibility + +--- a/pcrecpp.cc ++++ b/pcrecpp.cc +@@ -80,6 +80,12 @@ + // If the user doesn't ask for any options, we just use this one + static RE_Options default_options; + ++// PCRE6.x compatible API ++void RE::Init(const char *c_pat, const RE_Options* options) { ++ const string cxx_pat(c_pat); ++ Init(cxx_pat, options); ++} ++ + void RE::Init(const string& pat, const RE_Options* options) { + pattern_ = pat; + if (options == NULL) { +--- a/pcrecpp.h ++++ b/pcrecpp.h +@@ -658,6 +658,8 @@ + private: + + void Init(const string& pattern, const RE_Options* options); ++ // Old version from PCRE 6.x, for compatibility ++ void Init(const char *pattern, const RE_Options* options); + void Cleanup(); + + // Match against "text", filling in "vec" (up to "vecsize" * 2/3) with +--- a/pcretest.c ++++ b/pcretest.c +@@ -2976,7 +2976,7 @@ + { + FILE *infile = stdin; + const char *version; +-int options = 0; ++long int options = 0; + int study_options = 0; + int default_find_match_limit = FALSE; + pcre_uint32 default_options = 0; diff --git a/debian/patches/apply-upstream-revision-1631-closes-8159 b/debian/patches/apply-upstream-revision-1631-closes-8159 new file mode 100644 index 0000000..a11143a --- /dev/null +++ b/debian/patches/apply-upstream-revision-1631-closes-8159 @@ -0,0 +1,141 @@ +Description: Apply upstream revision 1631 (Closes: #815921) + This is an upstream patch to fix workspace overflow for (*ACCEPT) with + deeply nested parentheses +Author: Matthew Vernon +X-Dgit-Generated: 2:8.38-2 50aa7778a6bb8b81a9e03e8744f797362183772e + +--- + +--- pcre3-8.38.orig/pcreposix.c ++++ pcre3-8.38/pcreposix.c +@@ -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 @@ static const int eint[] = { + 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 */ +--- pcre3-8.38.orig/pcre_compile.c ++++ pcre3-8.38/pcre_compile.c +@@ -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 @@ static const char error_texts[] = + /* 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 @@ for (;; ptr++) + 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; + } + +@@ -6604,8 +6606,21 @@ for (;; ptr++) + 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; +--- pcre3-8.38.orig/pcre_internal.h ++++ pcre3-8.38/pcre_internal.h +@@ -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 @@ enum { ERR0, ERR1, ERR2, ERR3, ERR4, + 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. */ + +--- pcre3-8.38.orig/testdata/testoutput11-8 ++++ pcre3-8.38/testdata/testoutput11-8 +@@ -765,4 +765,7 @@ Memory allocation (code space): 10 + 38 End + ------------------------------------------------------------------ + ++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/ ++Failed: missing ) at offset 509 ++ + /-- End of testinput11 --/ +--- pcre3-8.38.orig/testdata/testoutput11-16 ++++ pcre3-8.38/testdata/testoutput11-16 +@@ -765,4 +765,7 @@ Memory allocation (code space): 14 + 25 End + ------------------------------------------------------------------ + ++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/ ++Failed: regular expression is too complicated at offset 490 ++ + /-- End of testinput11 --/ +--- pcre3-8.38.orig/testdata/testinput11 ++++ pcre3-8.38/testdata/testinput11 +@@ -138,4 +138,6 @@ is required for these tests. --/ + + /.((?2)(?R)\1)()/B + ++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/ ++ + /-- End of testinput11 --/ +--- pcre3-8.38.orig/testdata/testoutput11-32 ++++ pcre3-8.38/testdata/testoutput11-32 +@@ -765,4 +765,7 @@ Memory allocation (code space): 28 + 25 End + ------------------------------------------------------------------ + ++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/ ++Failed: missing ) at offset 509 ++ + /-- End of testinput11 --/ diff --git a/debian/patches/cve-2014-8964.patch b/debian/patches/cve-2014-8964.patch new file mode 100644 index 0000000..64786a0 --- /dev/null +++ b/debian/patches/cve-2014-8964.patch @@ -0,0 +1,23 @@ +Description: CVE-2014-8964, 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 +Applied-Upstream: Yes, after 8.36 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/pcre_exec.c ++++ b/pcre_exec.c +@@ -1404,8 +1404,11 @@ + condition = TRUE; + + /* Advance ecode past the assertion to the start of the first branch, +- but adjust it so that the general choosing code below works. */ ++ but adjust it so that the general choosing code below works. If the ++ assertion has a quantifier that allows zero repeats we must skip over ++ the BRAZERO. This is a lunatic thing to do, but somebody did! */ + ++ if (*ecode == OP_BRAZERO) ecode++; + ecode += GET(ecode, 1); + while (*ecode == OP_ALT) ecode += GET(ecode, 1); + ecode += 1 + LINK_SIZE - PRIV(OP_lengths)[condcode]; diff --git a/debian/patches/fix_find_fixedlength.patch b/debian/patches/fix_find_fixedlength.patch new file mode 100644 index 0000000..84fbb02 --- /dev/null +++ b/debian/patches/fix_find_fixedlength.patch @@ -0,0 +1,21 @@ +Description: Fix buffer overflow for forward reference within backward assertion with excess closing parenthesis. + Strictly, this is a backport, but the patch is trivial. +Origin: upstream http://vcs.pcre.org/pcre?view=revision&revision=1571 +Bug: https://bugs.exim.org/show_bug.cgi?id=1651 +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=790000 +Last-Update: 2015-06-26 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: b/pcre_compile.c +=================================================================== +--- a/pcre_compile.c 2015-05-26 08:24:55.000000000 +0100 ++++ b/pcre_compile.c 2015-06-26 08:00:13.000000000 +0100 +@@ -9265,7 +9265,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; + diff --git a/debian/patches/no_jit_x32_powerpcspe.patch b/debian/patches/no_jit_x32_powerpcspe.patch new file mode 100644 index 0000000..d499096 --- /dev/null +++ b/debian/patches/no_jit_x32_powerpcspe.patch @@ -0,0 +1,33 @@ +Description: Disable JIT on x32, needs explicit porting to ILP32 amd64, FPU-less PowerPC. +Author: Thorsten Glaser , Roland Stigge + +Index: pcre3/sljit/sljitConfigInternal.h +=================================================================== +--- pcre3.orig/sljit/sljitConfigInternal.h 2015-07-31 12:00:43.000000000 +0100 ++++ pcre3/sljit/sljitConfigInternal.h 2015-12-22 13:30:50.000000000 +0000 +@@ -117,7 +117,11 @@ + #if defined(__i386__) || defined(__i386) + #define SLJIT_CONFIG_X86_32 1 + #elif defined(__x86_64__) +-#define SLJIT_CONFIG_X86_64 1 ++# if defined(__ILP32__) ++# define SLJIT_CONFIG_UNSUPPORTED 1 ++# else ++# define SLJIT_CONFIG_X86_64 1 ++# endif + #elif defined(__arm__) || defined(__ARM__) + #ifdef __thumb2__ + #define SLJIT_CONFIG_ARM_THUMB2 1 +@@ -131,7 +135,11 @@ + #elif defined(__ppc64__) || defined(__powerpc64__) || defined(_ARCH_PPC64) || (defined(_POWER) && defined(__64BIT__)) + #define SLJIT_CONFIG_PPC_64 1 + #elif defined(__ppc__) || defined(__powerpc__) || defined(_ARCH_PPC) || defined(_ARCH_PWR) || defined(_ARCH_PWR2) || defined(_POWER) +-#define SLJIT_CONFIG_PPC_32 1 ++# ifndef __NO_FPRS__ ++# define SLJIT_CONFIG_PPC_32 1 ++# else ++# define SLJIT_CONFIG_UNSUPPORTED 1 ++# endif + #elif defined(__mips__) && !defined(_LP64) + #define SLJIT_CONFIG_MIPS_32 1 + #elif defined(__mips64) diff --git a/debian/patches/pcre_info.patch b/debian/patches/pcre_info.patch new file mode 100644 index 0000000..5a8657b --- /dev/null +++ b/debian/patches/pcre_info.patch @@ -0,0 +1,385 @@ +From: Mark Baker +Description: Restore obsolete pcre_info() API for compatiblity + +Index: pcre3/Makefile.am +=================================================================== +--- pcre3.orig/Makefile.am 2014-04-04 14:39:50.000000000 +0100 ++++ pcre3/Makefile.am 2015-12-22 12:37:59.000000000 +0000 +@@ -233,6 +233,7 @@ + pcre_fullinfo.c \ + pcre_get.c \ + pcre_globals.c \ ++ pcre_info.c \ + pcre_internal.h \ + pcre_jit_compile.c \ + pcre_maketables.c \ +@@ -647,7 +648,7 @@ + # nice DLL for Windows use". (It is used by the pcre.dll target.) + DLL_OBJS= pcre_byte_order.o pcre_compile.o pcre_config.o \ + pcre_dfa_exec.o pcre_exec.o pcre_fullinfo.o pcre_get.o \ +- pcre_globals.o pcre_jit_compile.o pcre_maketables.o \ ++ pcre_globals.o pcre_info.o pcre_jit_compile.o pcre_maketables.o \ + pcre_newline.o pcre_ord2utf8.o pcre_refcount.o \ + pcre_study.o pcre_tables.o pcre_ucd.o \ + pcre_valid_utf8.o pcre_version.o pcre_chartables.o \ +Index: pcre3/Makefile.in +=================================================================== +--- pcre3.orig/Makefile.in 2015-11-23 12:37:21.000000000 +0000 ++++ pcre3/Makefile.in 2015-12-22 12:37:59.000000000 +0000 +@@ -218,11 +218,11 @@ + libpcre_la_DEPENDENCIES = + am__libpcre_la_SOURCES_DIST = pcre_byte_order.c pcre_compile.c \ + pcre_config.c pcre_dfa_exec.c pcre_exec.c pcre_fullinfo.c \ +- pcre_get.c pcre_globals.c pcre_internal.h pcre_jit_compile.c \ +- pcre_maketables.c pcre_newline.c pcre_ord2utf8.c \ +- pcre_refcount.c pcre_string_utils.c pcre_study.c pcre_tables.c \ +- pcre_ucd.c pcre_valid_utf8.c pcre_version.c pcre_xclass.c \ +- ucp.h ++ pcre_get.c pcre_globals.c pcre_info.c pcre_internal.h \ ++ pcre_jit_compile.c pcre_maketables.c pcre_newline.c \ ++ pcre_ord2utf8.c pcre_refcount.c pcre_string_utils.c \ ++ pcre_study.c pcre_tables.c pcre_ucd.c pcre_valid_utf8.c \ ++ pcre_version.c pcre_xclass.c ucp.h + @WITH_PCRE8_TRUE@am_libpcre_la_OBJECTS = \ + @WITH_PCRE8_TRUE@ libpcre_la-pcre_byte_order.lo \ + @WITH_PCRE8_TRUE@ libpcre_la-pcre_compile.lo \ +@@ -232,6 +232,7 @@ + @WITH_PCRE8_TRUE@ libpcre_la-pcre_fullinfo.lo \ + @WITH_PCRE8_TRUE@ libpcre_la-pcre_get.lo \ + @WITH_PCRE8_TRUE@ libpcre_la-pcre_globals.lo \ ++@WITH_PCRE8_TRUE@ libpcre_la-pcre_info.lo \ + @WITH_PCRE8_TRUE@ libpcre_la-pcre_jit_compile.lo \ + @WITH_PCRE8_TRUE@ libpcre_la-pcre_maketables.lo \ + @WITH_PCRE8_TRUE@ libpcre_la-pcre_newline.lo \ +@@ -251,7 +252,7 @@ + AM_V_lt = $(am__v_lt_@AM_V@) + am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) + am__v_lt_0 = --silent +-am__v_lt_1 = ++am__v_lt_1 = + libpcre_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libpcre_la_CFLAGS) \ + $(CFLAGS) $(libpcre_la_LDFLAGS) $(LDFLAGS) -o $@ +@@ -449,11 +450,11 @@ + AM_V_GEN = $(am__v_GEN_@AM_V@) + am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) + am__v_GEN_0 = @echo " GEN " $@; +-am__v_GEN_1 = ++am__v_GEN_1 = + AM_V_at = $(am__v_at_@AM_V@) + am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) + am__v_at_0 = @ +-am__v_at_1 = ++am__v_at_1 = + DEFAULT_INCLUDES = -I.@am__isrc@ + depcomp = $(SHELL) $(top_srcdir)/depcomp + am__depfiles_maybe = depfiles +@@ -467,7 +468,7 @@ + AM_V_CC = $(am__v_CC_@AM_V@) + am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) + am__v_CC_0 = @echo " CC " $@; +-am__v_CC_1 = ++am__v_CC_1 = + CCLD = $(CC) + LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +@@ -475,7 +476,7 @@ + AM_V_CCLD = $(am__v_CCLD_@AM_V@) + am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) + am__v_CCLD_0 = @echo " CCLD " $@; +-am__v_CCLD_1 = ++am__v_CCLD_1 = + CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) + LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ +@@ -485,7 +486,7 @@ + AM_V_CXX = $(am__v_CXX_@AM_V@) + am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) + am__v_CXX_0 = @echo " CXX " $@; +-am__v_CXX_1 = ++am__v_CXX_1 = + CXXLD = $(CXX) + CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ +@@ -493,7 +494,7 @@ + AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) + am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) + am__v_CXXLD_0 = @echo " CXXLD " $@; +-am__v_CXXLD_1 = ++am__v_CXXLD_1 = + SOURCES = $(libpcre_la_SOURCES) $(nodist_libpcre_la_SOURCES) \ + $(libpcre16_la_SOURCES) $(nodist_libpcre16_la_SOURCES) \ + $(libpcre32_la_SOURCES) $(nodist_libpcre32_la_SOURCES) \ +@@ -832,9 +833,6 @@ + PCRE_MINOR = @PCRE_MINOR@ + PCRE_PRERELEASE = @PCRE_PRERELEASE@ + PCRE_STATIC_CFLAG = @PCRE_STATIC_CFLAG@ +-PKG_CONFIG = @PKG_CONFIG@ +-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + PTHREAD_CC = @PTHREAD_CC@ + PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ + PTHREAD_LIBS = @PTHREAD_LIBS@ +@@ -844,8 +842,6 @@ + SHELL = @SHELL@ + SHTOOL = @SHTOOL@ + STRIP = @STRIP@ +-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ +-VALGRIND_LIBS = @VALGRIND_LIBS@ + VERSION = @VERSION@ + VISIBILITY_CFLAGS = @VISIBILITY_CFLAGS@ + VISIBILITY_CXXFLAGS = @VISIBILITY_CXXFLAGS@ +@@ -988,7 +984,7 @@ + # The Libtool libraries to install. We'll add to this later. + lib_LTLIBRARIES = $(am__append_4) $(am__append_5) $(am__append_6) \ + $(am__append_20) $(am__append_22) +-check_SCRIPTS = ++check_SCRIPTS = + dist_noinst_SCRIPTS = RunTest $(am__append_39) + + # Additional files to delete on 'make clean' and 'make maintainer-clean'. +@@ -1093,6 +1089,7 @@ + @WITH_PCRE8_TRUE@ pcre_fullinfo.c \ + @WITH_PCRE8_TRUE@ pcre_get.c \ + @WITH_PCRE8_TRUE@ pcre_globals.c \ ++@WITH_PCRE8_TRUE@ pcre_info.c \ + @WITH_PCRE8_TRUE@ pcre_internal.h \ + @WITH_PCRE8_TRUE@ pcre_jit_compile.c \ + @WITH_PCRE8_TRUE@ pcre_maketables.c \ +@@ -1110,7 +1107,7 @@ + + @WITH_PCRE8_TRUE@libpcre_la_CFLAGS = $(VISIBILITY_CFLAGS) $(AM_CFLAGS) \ + @WITH_PCRE8_TRUE@ $(am__append_7) $(am__append_10) +-@WITH_PCRE8_TRUE@libpcre_la_LIBADD = ++@WITH_PCRE8_TRUE@libpcre_la_LIBADD = + @WITH_PCRE8_TRUE@nodist_libpcre_la_SOURCES = \ + @WITH_PCRE8_TRUE@ pcre_chartables.c + +@@ -1141,7 +1138,7 @@ + @WITH_PCRE16_TRUE@libpcre16_la_CFLAGS = $(VISIBILITY_CFLAGS) \ + @WITH_PCRE16_TRUE@ $(AM_CFLAGS) $(am__append_8) \ + @WITH_PCRE16_TRUE@ $(am__append_11) +-@WITH_PCRE16_TRUE@libpcre16_la_LIBADD = ++@WITH_PCRE16_TRUE@libpcre16_la_LIBADD = + @WITH_PCRE16_TRUE@nodist_libpcre16_la_SOURCES = \ + @WITH_PCRE16_TRUE@ pcre_chartables.c + +@@ -1172,7 +1169,7 @@ + @WITH_PCRE32_TRUE@libpcre32_la_CFLAGS = $(VISIBILITY_CFLAGS) \ + @WITH_PCRE32_TRUE@ $(AM_CFLAGS) $(am__append_9) \ + @WITH_PCRE32_TRUE@ $(am__append_12) +-@WITH_PCRE32_TRUE@libpcre32_la_LIBADD = ++@WITH_PCRE32_TRUE@libpcre32_la_LIBADD = + @WITH_PCRE32_TRUE@nodist_libpcre32_la_SOURCES = \ + @WITH_PCRE32_TRUE@ pcre_chartables.c + +@@ -1227,7 +1224,7 @@ + # nice DLL for Windows use". (It is used by the pcre.dll target.) + DLL_OBJS = pcre_byte_order.o pcre_compile.o pcre_config.o \ + pcre_dfa_exec.o pcre_exec.o pcre_fullinfo.o pcre_get.o \ +- pcre_globals.o pcre_jit_compile.o pcre_maketables.o \ ++ pcre_globals.o pcre_info.o pcre_jit_compile.o pcre_maketables.o \ + pcre_newline.o pcre_ord2utf8.o pcre_refcount.o \ + pcre_study.o pcre_tables.o pcre_ucd.o \ + pcre_valid_utf8.o pcre_version.o pcre_chartables.o \ +@@ -1313,8 +1310,8 @@ + @WITH_GCOV_TRUE@COVERAGE_NAME = $(PACKAGE)-$(VERSION) + @WITH_GCOV_TRUE@COVERAGE_OUTPUT_FILE = $(COVERAGE_NAME)-coverage.info + @WITH_GCOV_TRUE@COVERAGE_OUTPUT_DIR = $(COVERAGE_NAME)-coverage +-@WITH_GCOV_TRUE@COVERAGE_LCOV_EXTRA_FLAGS = +-@WITH_GCOV_TRUE@COVERAGE_GENHTML_EXTRA_FLAGS = ++@WITH_GCOV_TRUE@COVERAGE_LCOV_EXTRA_FLAGS = ++@WITH_GCOV_TRUE@COVERAGE_GENHTML_EXTRA_FLAGS = + @WITH_GCOV_TRUE@coverage_quiet = $(coverage_quiet_$(V)) + @WITH_GCOV_TRUE@coverage_quiet_ = $(coverage_quiet_$(AM_DEFAULT_VERBOSITY)) + @WITH_GCOV_TRUE@coverage_quiet_0 = --quiet +@@ -1364,7 +1361,7 @@ + stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +-$(srcdir)/config.h.in: $(am__configure_deps) ++$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ +@@ -1425,19 +1422,19 @@ + rm -f $${locs}; \ + } + +-libpcre.la: $(libpcre_la_OBJECTS) $(libpcre_la_DEPENDENCIES) $(EXTRA_libpcre_la_DEPENDENCIES) ++libpcre.la: $(libpcre_la_OBJECTS) $(libpcre_la_DEPENDENCIES) $(EXTRA_libpcre_la_DEPENDENCIES) + $(AM_V_CCLD)$(libpcre_la_LINK) $(am_libpcre_la_rpath) $(libpcre_la_OBJECTS) $(libpcre_la_LIBADD) $(LIBS) + +-libpcre16.la: $(libpcre16_la_OBJECTS) $(libpcre16_la_DEPENDENCIES) $(EXTRA_libpcre16_la_DEPENDENCIES) ++libpcre16.la: $(libpcre16_la_OBJECTS) $(libpcre16_la_DEPENDENCIES) $(EXTRA_libpcre16_la_DEPENDENCIES) + $(AM_V_CCLD)$(libpcre16_la_LINK) $(am_libpcre16_la_rpath) $(libpcre16_la_OBJECTS) $(libpcre16_la_LIBADD) $(LIBS) + +-libpcre32.la: $(libpcre32_la_OBJECTS) $(libpcre32_la_DEPENDENCIES) $(EXTRA_libpcre32_la_DEPENDENCIES) ++libpcre32.la: $(libpcre32_la_OBJECTS) $(libpcre32_la_DEPENDENCIES) $(EXTRA_libpcre32_la_DEPENDENCIES) + $(AM_V_CCLD)$(libpcre32_la_LINK) $(am_libpcre32_la_rpath) $(libpcre32_la_OBJECTS) $(libpcre32_la_LIBADD) $(LIBS) + +-libpcrecpp.la: $(libpcrecpp_la_OBJECTS) $(libpcrecpp_la_DEPENDENCIES) $(EXTRA_libpcrecpp_la_DEPENDENCIES) ++libpcrecpp.la: $(libpcrecpp_la_OBJECTS) $(libpcrecpp_la_DEPENDENCIES) $(EXTRA_libpcrecpp_la_DEPENDENCIES) + $(AM_V_CXXLD)$(libpcrecpp_la_LINK) $(am_libpcrecpp_la_rpath) $(libpcrecpp_la_OBJECTS) $(libpcrecpp_la_LIBADD) $(LIBS) + +-libpcreposix.la: $(libpcreposix_la_OBJECTS) $(libpcreposix_la_DEPENDENCIES) $(EXTRA_libpcreposix_la_DEPENDENCIES) ++libpcreposix.la: $(libpcreposix_la_OBJECTS) $(libpcreposix_la_DEPENDENCIES) $(EXTRA_libpcreposix_la_DEPENDENCIES) + $(AM_V_CCLD)$(libpcreposix_la_LINK) $(am_libpcreposix_la_rpath) $(libpcreposix_la_OBJECTS) $(libpcreposix_la_LIBADD) $(LIBS) + install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) +@@ -1498,31 +1495,31 @@ + echo " rm -f" $$list; \ + rm -f $$list + +-dftables$(EXEEXT): $(dftables_OBJECTS) $(dftables_DEPENDENCIES) $(EXTRA_dftables_DEPENDENCIES) ++dftables$(EXEEXT): $(dftables_OBJECTS) $(dftables_DEPENDENCIES) $(EXTRA_dftables_DEPENDENCIES) + @rm -f dftables$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dftables_OBJECTS) $(dftables_LDADD) $(LIBS) + +-pcre_jit_test$(EXEEXT): $(pcre_jit_test_OBJECTS) $(pcre_jit_test_DEPENDENCIES) $(EXTRA_pcre_jit_test_DEPENDENCIES) ++pcre_jit_test$(EXEEXT): $(pcre_jit_test_OBJECTS) $(pcre_jit_test_DEPENDENCIES) $(EXTRA_pcre_jit_test_DEPENDENCIES) + @rm -f pcre_jit_test$(EXEEXT) + $(AM_V_CCLD)$(pcre_jit_test_LINK) $(pcre_jit_test_OBJECTS) $(pcre_jit_test_LDADD) $(LIBS) + +-pcre_scanner_unittest$(EXEEXT): $(pcre_scanner_unittest_OBJECTS) $(pcre_scanner_unittest_DEPENDENCIES) $(EXTRA_pcre_scanner_unittest_DEPENDENCIES) ++pcre_scanner_unittest$(EXEEXT): $(pcre_scanner_unittest_OBJECTS) $(pcre_scanner_unittest_DEPENDENCIES) $(EXTRA_pcre_scanner_unittest_DEPENDENCIES) + @rm -f pcre_scanner_unittest$(EXEEXT) + $(AM_V_CXXLD)$(pcre_scanner_unittest_LINK) $(pcre_scanner_unittest_OBJECTS) $(pcre_scanner_unittest_LDADD) $(LIBS) + +-pcre_stringpiece_unittest$(EXEEXT): $(pcre_stringpiece_unittest_OBJECTS) $(pcre_stringpiece_unittest_DEPENDENCIES) $(EXTRA_pcre_stringpiece_unittest_DEPENDENCIES) ++pcre_stringpiece_unittest$(EXEEXT): $(pcre_stringpiece_unittest_OBJECTS) $(pcre_stringpiece_unittest_DEPENDENCIES) $(EXTRA_pcre_stringpiece_unittest_DEPENDENCIES) + @rm -f pcre_stringpiece_unittest$(EXEEXT) + $(AM_V_CXXLD)$(pcre_stringpiece_unittest_LINK) $(pcre_stringpiece_unittest_OBJECTS) $(pcre_stringpiece_unittest_LDADD) $(LIBS) + +-pcrecpp_unittest$(EXEEXT): $(pcrecpp_unittest_OBJECTS) $(pcrecpp_unittest_DEPENDENCIES) $(EXTRA_pcrecpp_unittest_DEPENDENCIES) ++pcrecpp_unittest$(EXEEXT): $(pcrecpp_unittest_OBJECTS) $(pcrecpp_unittest_DEPENDENCIES) $(EXTRA_pcrecpp_unittest_DEPENDENCIES) + @rm -f pcrecpp_unittest$(EXEEXT) + $(AM_V_CXXLD)$(pcrecpp_unittest_LINK) $(pcrecpp_unittest_OBJECTS) $(pcrecpp_unittest_LDADD) $(LIBS) + +-pcregrep$(EXEEXT): $(pcregrep_OBJECTS) $(pcregrep_DEPENDENCIES) $(EXTRA_pcregrep_DEPENDENCIES) ++pcregrep$(EXEEXT): $(pcregrep_OBJECTS) $(pcregrep_DEPENDENCIES) $(EXTRA_pcregrep_DEPENDENCIES) + @rm -f pcregrep$(EXEEXT) + $(AM_V_CCLD)$(pcregrep_LINK) $(pcregrep_OBJECTS) $(pcregrep_LDADD) $(LIBS) + +-pcretest$(EXEEXT): $(pcretest_OBJECTS) $(pcretest_DEPENDENCIES) $(EXTRA_pcretest_DEPENDENCIES) ++pcretest$(EXEEXT): $(pcretest_OBJECTS) $(pcretest_DEPENDENCIES) $(EXTRA_pcretest_DEPENDENCIES) + @rm -f pcretest$(EXEEXT) + $(AM_V_CCLD)$(pcretest_LINK) $(pcretest_OBJECTS) $(pcretest_LDADD) $(LIBS) + install-binSCRIPTS: $(bin_SCRIPTS) +@@ -1623,6 +1620,7 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_fullinfo.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_get.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_globals.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_info.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_jit_compile.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_maketables.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_newline.Plo@am__quote@ +@@ -1726,6 +1724,13 @@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_globals.lo `test -f 'pcre_globals.c' || echo '$(srcdir)/'`pcre_globals.c + ++libpcre_la-pcre_info.lo: pcre_info.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_info.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_info.Tpo -c -o libpcre_la-pcre_info.lo `test -f 'pcre_info.c' || echo '$(srcdir)/'`pcre_info.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_info.Tpo $(DEPDIR)/libpcre_la-pcre_info.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_info.c' object='libpcre_la-pcre_info.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_info.lo `test -f 'pcre_info.c' || echo '$(srcdir)/'`pcre_info.c ++ + libpcre_la-pcre_jit_compile.lo: pcre_jit_compile.c + @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_jit_compile.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_jit_compile.Tpo -c -o libpcre_la-pcre_jit_compile.lo `test -f 'pcre_jit_compile.c' || echo '$(srcdir)/'`pcre_jit_compile.c + @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_jit_compile.Tpo $(DEPDIR)/libpcre_la-pcre_jit_compile.Plo +Index: pcre3/pcre_info.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ pcre3/pcre_info.c 2015-12-22 12:37:59.000000000 +0000 +@@ -0,0 +1,90 @@ ++/************************************************* ++* Perl-Compatible Regular Expressions * ++*************************************************/ ++ ++/* PCRE is a library of functions to support regular expressions whose syntax ++and semantics are as close as possible to those of the Perl 5 language. ++ ++ Written by Philip Hazel ++ Copyright (c) 1997-2009 University of Cambridge ++ ++----------------------------------------------------------------------------- ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions are met: ++ ++ * Redistributions of source code must retain the above copyright notice, ++ this list of conditions and the following disclaimer. ++ ++ * Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++ * Neither the name of the University of Cambridge nor the names of its ++ contributors may be used to endorse or promote products derived from ++ this software without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ++LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ++POSSIBILITY OF SUCH DAMAGE. ++----------------------------------------------------------------------------- ++*/ ++ ++ ++/* This module contains the external function pcre_info(), which gives some ++information about a compiled pattern. However, use of this function is now ++deprecated, as it has been superseded by pcre_fullinfo(). */ ++ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include "pcre_internal.h" ++ ++ ++/************************************************* ++* (Obsolete) Return info about compiled pattern * ++*************************************************/ ++ ++/* This is the original "info" function. It picks potentially useful data out ++of the private structure, but its interface was too rigid. It remains for ++backwards compatibility. The public options are passed back in an int - though ++the re->options field has been expanded to a long int, all the public options ++at the low end of it, and so even on 16-bit systems this will still be OK. ++Therefore, I haven't changed the API for pcre_info(). ++ ++Arguments: ++ argument_re points to compiled code ++ optptr where to pass back the options ++ first_byte where to pass back the first character, ++ or -1 if multiline and all branches start ^, ++ or -2 otherwise ++ ++Returns: number of capturing subpatterns ++ or negative values on error ++*/ ++ ++PCRE_EXP_DEFN int PCRE_CALL_CONVENTION ++pcre_info(const pcre *argument_re, int *optptr, int *first_byte) ++{ ++const real_pcre *re = (const real_pcre *)argument_re; ++if (re == NULL) return PCRE_ERROR_NULL; ++if (re->magic_number != MAGIC_NUMBER) ++ return PCRE_ERROR_BADMAGIC; ++ ++if (optptr != NULL) *optptr = (int)(re->options & PUBLIC_COMPILE_OPTIONS); ++if (first_byte != NULL) ++ *first_byte = ((re->flags & PCRE_FIRSTSET) != 0)? re->first_char : ++ ((re->flags & PCRE_STARTLINE) != 0)? -1 : -2; ++return re->top_bracket; ++} ++ ++/* End of pcre_info.c */ diff --git a/debian/patches/pcregrep.1-patch b/debian/patches/pcregrep.1-patch new file mode 100644 index 0000000..4012369 --- /dev/null +++ b/debian/patches/pcregrep.1-patch @@ -0,0 +1,26 @@ +From: Mark Baker +Description: Mention zpcregrep wrapper script in pcregrep man page. + + +Index: pcre3/doc/pcregrep.1 +=================================================================== +--- pcre3.orig/doc/pcregrep.1 2014-04-04 14:37:38.000000000 +0100 ++++ pcre3/doc/pcregrep.1 2015-12-22 12:39:07.000000000 +0000 +@@ -3,6 +3,7 @@ + pcregrep - a grep with Perl-compatible regular expressions. + .SH SYNOPSIS + .B pcregrep [options] [long options] [pattern] [path1 path2 ...] ++.B zpcregrep [options] [long options] [pattern] [file1 file2 ...] + . + .SH DESCRIPTION + .rs +@@ -87,6 +88,9 @@ + If the \fBLC_ALL\fP or \fBLC_CTYPE\fP environment variable is set, + \fBpcregrep\fP uses the value to set a locale when calling the PCRE library. + The \fB--locale\fP option can be used to override this. ++.P ++\fBzpcregrep\fR is a wrapper script that allows pcregrep to work on ++gzip compressed files. + . + . + .SH "SUPPORT FOR COMPRESSED FILES" diff --git a/debian/patches/pcreposix.patch b/debian/patches/pcreposix.patch new file mode 100644 index 0000000..587e8eb --- /dev/null +++ b/debian/patches/pcreposix.patch @@ -0,0 +1,31 @@ +From: Mark Baker +Description: Fix PCRE posix interface otherwise libc regexes are used (Bug 22525) + +Index: pcre-8.30/pcreposix.h +=================================================================== +--- pcre-8.30.orig/pcreposix.h 2011-12-28 17:57:51.000000000 +0100 ++++ pcre-8.30/pcreposix.h 2012-03-23 11:05:02.223026534 +0100 +@@ -133,14 +133,19 @@ + + /* The functions */ + +-PCREPOSIX_EXP_DECL int regcomp(regex_t *, const char *, int); +-PCREPOSIX_EXP_DECL int regexec(const regex_t *, const char *, size_t, ++PCREPOSIX_EXP_DECL int pcreposix_regcomp(regex_t *, const char *, int); ++PCREPOSIX_EXP_DECL int pcreposix_regexec(const regex_t *, const char *, size_t, + regmatch_t *, int); +-PCREPOSIX_EXP_DECL size_t regerror(int, const regex_t *, char *, size_t); +-PCREPOSIX_EXP_DECL void regfree(regex_t *); ++PCREPOSIX_EXP_DECL size_t pcreposix_regerror(int, const regex_t *, char *, size_t); ++PCREPOSIX_EXP_DECL void pcreposix_regfree(regex_t *); + + #ifdef __cplusplus + } /* extern "C" */ + #endif + ++#define regcomp pcreposix_regcomp ++#define regexec pcreposix_regexec ++#define regerror pcreposix_regerror ++#define regfree pcreposix_regfree ++ + #endif /* End of pcreposix.h */ diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..b766780 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,9 @@ +PCRE6_compatible_API.patch +pcreposix.patch +pcre_info.patch +pcregrep.1-patch +soname.patch +no_jit_x32_powerpcspe.patch +Disable_JIT_on_sparc64.patch +apply-upstream-revision-1631-closes-8159 +CVE-2016-1283.patch diff --git a/debian/patches/soname.patch b/debian/patches/soname.patch new file mode 100644 index 0000000..cbdae2a --- /dev/null +++ b/debian/patches/soname.patch @@ -0,0 +1,21 @@ +From: Mark Baker +Description: Change soname to what debian use +Index: pcre3/configure.ac +=================================================================== +--- pcre3.orig/configure.ac 2015-12-22 13:27:15.000000000 +0000 ++++ pcre3/configure.ac 2015-12-22 13:28:37.000000000 +0000 +@@ -17,10 +17,10 @@ + # 50 lines of this file. Please update that if the variables above are moved. + + # Libtool shared library interface versions (current:revision:age) +-m4_define(libpcre_version, [3:6:2]) +-m4_define(libpcre16_version, [2:6:2]) +-m4_define(libpcre32_version, [0:6:0]) +-m4_define(libpcreposix_version, [0:3:0]) ++m4_define(libpcre_version, [16:2:13]) ++m4_define(libpcre16_version, [16:2:13]) ++m4_define(libpcre32_version, [16:2:13]) ++m4_define(libpcreposix_version, [16:2:13]) + m4_define(libpcrecpp_version, [0:1:0]) + + AC_PREREQ(2.57) diff --git a/debian/pcre-config.1 b/debian/pcre-config.1 new file mode 100644 index 0000000..fbcd559 --- /dev/null +++ b/debian/pcre-config.1 @@ -0,0 +1,57 @@ +.TH PCRE-CONFIG 1 +.SH NAME +pcre-config \- program to return PCRE configuration +.SH SYNOPSIS +.B pcre-config +.RB [ --prefix ] +.RB [ --exec-prefix ] +.RB [ --version ] +.RB [ --libs ] +.RB [ --libs-posix ] +.RB [ --cflags ] +.RB [ --cflags-posix ] + +.SH DESCRIPTION +\fBpcre-config\fR returns the configuration of the installed PCRE +libraries: the options required to compile a program to use them. + +.SH OPTIONS +.TP 10 +\fB--prefix\fR +Writes the directory prefix used in the PCRE installation for +architecture independent files (e.g. \fI/usr\fR) to standard output. +.TP +\fB--exec-prefix\fR +Writes the directory prefix used in the PCRE installation for +architecture dependent files (normally the same as \fB--prefix\fR) +to standard output. +.TP +\fB--version\fR +Writes the version of PCRE installed to standard output. +.TP +\fB--libs\fR +Writes to standard output the command line options required to link +with PCRE (e.g. \fI-lpcre\fR). +.TP +\fB--libs-posix\fR +Writes to standard output the command line options required to link +with the PCRE POSIX emulation library (e.g. \fI-lpcreposix -lpcre\fR). +.TP +\fB--cflags\fR +Writes to standard output the command line options required to compile +files that use PCRE (this often includes some \fI-I\fR options, but is blank +on debian systems). +.TP +\fB--cflags-posix\fR +Writes to standard output the command line options required to compile +files that use the PCRE POSIX emulation library (this often includes +some -I options, but is blank on debian systems). Suppress printing of +filenames when searching multiple files. +.TP + +.SH AUTHOR +This manual page was written by Mark Baker , +for the Debian GNU/Linux system (but may be used by others). + +.SH SEE ALSO +\fBpcre(3) diff --git a/debian/pcregrep.files b/debian/pcregrep.files new file mode 100644 index 0000000..69e99f6 --- /dev/null +++ b/debian/pcregrep.files @@ -0,0 +1,3 @@ +usr/bin/pcregrep +usr/share/man/man1/pcregrep.1 + diff --git a/debian/pcregrep.install b/debian/pcregrep.install new file mode 100644 index 0000000..b0d181b --- /dev/null +++ b/debian/pcregrep.install @@ -0,0 +1,4 @@ +debian/tmp/usr/bin/pcregrep +debian/tmp/usr/share/man/man1/pcregrep.1 +debian/zpcregrep /usr/bin/ + diff --git a/debian/pcregrep.links b/debian/pcregrep.links new file mode 100644 index 0000000..5a10140 --- /dev/null +++ b/debian/pcregrep.links @@ -0,0 +1,2 @@ +usr/share/doc/libpcre3 usr/share/doc/pcregrep +usr/share/man/man1/pcregrep.1.gz usr/share/man/man1/zpcregrep.1.gz diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..7e53492 --- /dev/null +++ b/debian/rules @@ -0,0 +1,146 @@ +#!/usr/bin/make -f +# Sample debian/rules that uses debhelper. +# GNU copyright 1997 to 1999 by Joey Hess. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) + +INSTALL = install +INSTALL_FILE = $(INSTALL) -p -o root -g root -m 644 +INSTALL_PROGRAM = $(INSTALL) -p -o root -g root -m 755 +INSTALL_SCRIPT = $(INSTALL) -p -o root -g root -m 755 +INSTALL_DIR = $(INSTALL) -p -d -o root -g root -m 755 + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) +INSTALL_PROGRAM += -s +endif + +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + NJOBS = -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) +endif + +ENABLE_JIT=$(shell . debian/jit-test) + +configure-stamp: + dh_testdir + # Add here commands to configure the package. + dh_autoreconf + CC_FOR_BUILD=cc ./configure \ + --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \ + --prefix=/usr --mandir=\$${prefix}/share/man \ + --infodir=\$${prefix}/share/info \ + --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \ + --enable-utf8 --enable-unicode-properties \ + --disable-silent-rules \ + $(ENABLE_JIT) \ + --enable-pcre16 \ + --enable-pcre32 \ + $(shell DEB_CFLAGS_MAINT_APPEND=-Wall DEB_BUILD_MAINT_OPTIONS=hardening=+all dpkg-buildflags --export=configure) + touch configure-stamp + +build: build-arch build-indep +build-arch: build-stamp +build-indep: build-stamp +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + $(MAKE) $(NJOBS) +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + $(MAKE) check VERBOSE=1 +endif + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f configure-stamp build-stamp + # Add here commands to clean up after the build process. + [ ! -f Makefile ] || $(MAKE) distclean +### -test -r /usr/share/misc/config.sub && \ +### cp -f /usr/share/misc/config.sub config.sub +### -test -r /usr/share/misc/config.guess && \ +### cp -f /usr/share/misc/config.guess config.guess + rm -f dftables testsavedregex + rm -f debian/libpcre3.symbols + rm -f debian/libpcre16-3.symbols + rm -f debian/libpcre32-3.symbols + dh_autoreconf_clean + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/tmp + $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir -a + dh_testroot -a + dh_install -a + # This man page is in the main package, don't want it in -dev + rm debian/libpcre3-dev/usr/share/man/man3/pcrepattern.3 + # Move actual library to /lib + mkdir -p debian/libpcre3/lib/$(DEB_HOST_MULTIARCH) + mv debian/libpcre3/usr/lib/$(DEB_HOST_MULTIARCH)/libpcre.so.* debian/libpcre3/lib/$(DEB_HOST_MULTIARCH) + ln -sf /lib/$(DEB_HOST_MULTIARCH)/libpcre.so.3 debian/libpcre3-dev/usr/lib/$(DEB_HOST_MULTIARCH)/libpcre.so + # we never need to reference the library path in pcre-config on + # Debian, so clip it out so that the script will be multiarch-safe. + sed -i -e"s,/$(DEB_HOST_MULTIARCH),,g" debian/libpcre3-dev/usr/bin/pcre-config + + dh_link -a + +# dh_installdebconf -a + dh_installdocs -a + dh_installexamples -a +# dh_installmenu -a +# dh_installlogrotate -a +# dh_installemacsen -a +# dh_installpam -a +# dh_installmime -a +# dh_installinit -a +# dh_installcron -a + dh_installman -a + dh_installinfo -a +# dh_undocumented -a + dh_installchangelogs -a ChangeLog + dh_strip -a --dbg-package=libpcre3-dbg + # Don't include pcregrep or libraries from udeb in debug package + rm -r debian/libpcre3-dbg/usr/lib/debug/usr/bin + rm debian/libpcre3-dbg/usr/lib/debug/usr/lib/libpcre* + dh_compress -a + dh_fixperms -a +ifneq (,$(ENABLE_JIT)) + sed -e 's/JIT//' debian/libpcre3.symbols.in > debian/libpcre3.symbols + sed -e 's/JIT//' debian/libpcre16-3.symbols.in > debian/libpcre16-3.symbols + sed -e 's/JIT//' debian/libpcre32-3.symbols.in > debian/libpcre32-3.symbols +else + sed -e 's/JIT/#/' debian/libpcre3.symbols.in > debian/libpcre3.symbols + sed -e 's/JIT/#/' debian/libpcre16-3.symbols.in > debian/libpcre16-3.symbols + sed -e 's/JIT/#/' debian/libpcre32-3.symbols.in > debian/libpcre32-3.symbols +endif + dh_makeshlibs -plibpcre3 --add-udeb="libpcre3-udeb" -V 'libpcre3 (>= 1:8.35)' -- -c4 + dh_makeshlibs -plibpcrecpp0v5 -V 'libpcrecpp0v5 (>= 7.7)' -- -c4 + dh_makeshlibs -plibpcre16-3 -plibpcre32-3 -- -c4 + dh_installdeb -a +# dh_perl -a + dh_shlibdeps -a -ldebian/libpcre3/usr/lib/$(DEB_HOST_MULTIARCH) + dh_gencontrol -a + dh_md5sums -a + dh_builddeb -a + +binary-indep: + +binary: binary-arch binary-indep +.PHONY: build clean binary-arch binary install diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/source/options b/debian/source/options new file mode 100644 index 0000000..1017a30 --- /dev/null +++ b/debian/source/options @@ -0,0 +1,2 @@ +compression = "gzip" +compression-level = 9 diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..3209506 --- /dev/null +++ b/debian/watch @@ -0,0 +1,2 @@ +version=3 +ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-([\d\.]+)\.zip diff --git a/debian/zpcregrep b/debian/zpcregrep new file mode 100644 index 0000000..34e1c60 --- /dev/null +++ b/debian/zpcregrep @@ -0,0 +1,2 @@ +#!/bin/sh +GREP=pcregrep zgrep "$@" -- 2.30.2