chiark / gitweb /
Import debian/ directory from 2:8.38-3.1
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 13 Jul 2016 20:26:32 +0000 (21:26 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 13 Jul 2016 20:26:32 +0000 (21:26 +0100)
51 files changed:
debian/README.Debian [new file with mode: 0644]
debian/README.Versioning.libtool [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/dirs [new file with mode: 0644]
debian/jit-test [new file with mode: 0644]
debian/jit-test.c [new file with mode: 0644]
debian/libpcre16-3.install [new file with mode: 0644]
debian/libpcre16-3.symbols.in [new file with mode: 0644]
debian/libpcre3-dev.examples [new file with mode: 0644]
debian/libpcre3-dev.install [new file with mode: 0644]
debian/libpcre3-dev.manpages [new file with mode: 0644]
debian/libpcre3-udeb.install [new file with mode: 0644]
debian/libpcre3.docs [new file with mode: 0644]
debian/libpcre3.install [new file with mode: 0644]
debian/libpcre3.symbols.in [new file with mode: 0644]
debian/libpcre32-3.install [new file with mode: 0644]
debian/libpcre32-3.symbols.in [new file with mode: 0644]
debian/libpcrecpp0v5.docs [new file with mode: 0644]
debian/libpcrecpp0v5.install [new file with mode: 0644]
debian/libpcrecpp0v5.symbols [new file with mode: 0644]
debian/patches/794589-information-disclosure.patch [new file with mode: 0644]
debian/patches/CVE-2016-1283.patch [new file with mode: 0644]
debian/patches/Disable_JIT_on_sparc64.patch [new file with mode: 0644]
debian/patches/Fix-bad-compilation-for-patterns-like-1-1-with-forwa.patch [new file with mode: 0644]
debian/patches/Fix-bad-compile-for-groups-like-2-0-1999.patch [new file with mode: 0644]
debian/patches/Fix-buffer-overflow-for-named-recursive-back-referen.patch [new file with mode: 0644]
debian/patches/Fix-compile-time-loop-for-recursive-reference-within.patch [new file with mode: 0644]
debian/patches/Fix-compiler-crash-misbehaviour-for-zero-repeated-gr.patch [new file with mode: 0644]
debian/patches/Fix-silly-quantifier-size-check.patch [new file with mode: 0644]
debian/patches/PCRE6_compatible_API.patch [new file with mode: 0644]
debian/patches/apply-upstream-revision-1631-closes-8159 [new file with mode: 0644]
debian/patches/cve-2014-8964.patch [new file with mode: 0644]
debian/patches/fix_find_fixedlength.patch [new file with mode: 0644]
debian/patches/no_jit_x32_powerpcspe.patch [new file with mode: 0644]
debian/patches/pcre_info.patch [new file with mode: 0644]
debian/patches/pcregrep.1-patch [new file with mode: 0644]
debian/patches/pcreposix.patch [new file with mode: 0644]
debian/patches/series [new file with mode: 0644]
debian/patches/soname.patch [new file with mode: 0644]
debian/pcre-config.1 [new file with mode: 0644]
debian/pcregrep.files [new file with mode: 0644]
debian/pcregrep.install [new file with mode: 0644]
debian/pcregrep.links [new file with mode: 0644]
debian/rules [new file with mode: 0755]
debian/source/format [new file with mode: 0644]
debian/source/options [new file with mode: 0644]
debian/watch [new file with mode: 0644]
debian/zpcregrep [new file with mode: 0644]

diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644 (file)
index 0000000..ac6bde6
--- /dev/null
@@ -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 (file)
index 0000000..e963b71
--- /dev/null
@@ -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 (file)
index 0000000..0621273
--- /dev/null
@@ -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 <carnil@debian.org>  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 <matthew@debian.org>  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 <matthew@debian.org>  Sat, 27 Feb 2016 16:30:35 +0000
+
+pcre3 (2:8.38-1) unstable; urgency=low
+
+  * New upstream version
+
+ -- Matthew Vernon <matthew@debian.org>  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 <matthew@debian.org>  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 <glaubitz@physik.fu-berlin.de>  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 <glaubitz@physik.fu-berlin.de>  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 <carnil@debian.org>  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 <doko@debian.org>  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 <matthew@debian.org>  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 <matthew@debian.org>  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 <matthew@debian.org>  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 <matthew@debian.org>  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 <ivodd@debian.org>  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 <ivodd@debian.org>  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 <mark@mnb.org.uk>  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 <tg@mirbsd.de>  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 <mgilbert@debian.org>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  Thu, 22 Mar 2012 17:52:35 +0000
+
+pcre3 (8.30-1) unstable; urgency=low
+
+  * New upstream release (Closes:#664166)
+
+ -- Mark Baker <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  Tue, 08 Feb 2011 20:38:49 +0000
+
+pcre3 (8.12-1) unstable; urgency=low
+
+  * New upstream release (Closes: #554242)
+
+ -- Mark Baker <mark@mnb.org.uk>  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 <glondu@debian.org>  Sat, 31 Jul 2010 16:05:27 -0400
+
+pcre3 (8.02-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Mark Baker <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  Sun, 05 Oct 2008 17:06:46 +0100
+
+pcre3 (7.8-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Mark Baker <mark@mnb.org.uk>  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 <nion@debian.org>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <slomo@debian.org>,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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  Mon,  7 Jan 2008 21:02:52 +0000
+
+pcre3 (7.3-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Mark Baker <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  Fri,  3 Aug 2007 23:06:28 +0100
+
+pcre3 (6.7-1) unstable; urgency=low
+
+  * New upstream release (Closes: #389305)
+
+ -- Mark Baker <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <doko@debian.org>  Fri, 25 Nov 2005 07:59:14 +0100
+
+pcre3 (6.4-1) unstable; urgency=low
+
+  * New upstream release (Closes: 333191)
+
+ -- Mark Baker <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <vorlon@debian.org>  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 <mark@mnb.org.uk>  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 <ametzler@debian.org>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  Thu, 19 Jun 2003 21:00:39 +0100
+
+pcre3 (4.3-1) unstable; urgency=low
+
+  This release is entirely the work of Andreas Metzler <ametzler@debian.org>.
+  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <cjwatson@debian.org>  Sun, 19 Aug 2001 20:43:28 +0100
+
+pcre3 (3.4-1) unstable; urgency=low
+
+  * new upstream version (Closes: #93876)
+
+ -- Mark Baker <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mark@mnb.org.uk>  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 <mbaker@iee.org>  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 <mbaker@iee.org>  Tue, 22 Aug 2000 00:11:54 +0100
+
+pcre3 (3.3-1) unstable; urgency=low
+
+  * new package for pcre 3.x
+
+ -- Mark Baker <mbaker@iee.org>  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 <mbaker@iee.org>  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 <mbaker@iee.org>  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 <mbaker@iee.org>  Tue,  3 Aug 1999 23:58:35 +0100
+
+pcre2 (2.05-1) unstable; urgency=low
+
+  * new upstream version (#36776)
+
+ -- Mark Baker <mbaker@iee.org>  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 <mbaker@iee.org>  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 <mbaker@iee.org>  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 <mbaker@iee.org>  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 <mbaker@iee.org>  Sat, 30 May 1998 16:54:31 +0100
+
+pcre (1.09-1) unstable; urgency=low
+
+  * New upstream version
+
+ -- Mark Baker <mbaker@iee.org>  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 <mbaker@iee.org>  Sat, 28 Feb 1998 21:29:07 +0000
+
+pcre (1.06-3) unstable; urgency=low
+
+  * Strip pgrep
+
+ -- Mark Baker <mbaker@iee.org>  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 <mbaker@iee.org>  Mon,  9 Feb 1998 23:56:15 +0000
+
+pcre (1.06-1) unstable; urgency=low
+
+  * New upstream version (bug fixes)
+
+ -- Mark Baker <mbaker@iee.org>  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 <mbaker@iee.org>  Wed,  7 Jan 1998 21:14:51 +0000
+
+pcre (1.05-1) unstable; urgency=low
+
+  * New upstream version (bug fixes)
+
+ -- Mark Baker <mbaker@iee.org>  Sat, 27 Dec 1997 11:26:32 +0000
+
+pcre (1.02-1) unstable; urgency=low
+
+  * New upstream version
+
+ -- Mark Baker <mbaker@iee.org>  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 <mbaker@iee.org>  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 <mbaker@iee.org>  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 <mbaker@iee.org>  Fri, 21 Nov 1997 23:52:06 +0000
+
+pcre (1.01-1) unstable; urgency=low
+
+  * Initial debian release
+
+ -- Mark Baker <mbaker@iee.org>  Fri, 21 Nov 1997 20:36:13 +0000
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..8ce64d0
--- /dev/null
@@ -0,0 +1,117 @@
+Source: pcre3
+Section: libs
+Priority: optional
+Maintainer:  Matthew Vernon <matthew@debian.org>
+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 (file)
index 0000000..c589cd8
--- /dev/null
@@ -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 <mbaker@iee.org> 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 (file)
index 0000000..ca882bb
--- /dev/null
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/debian/jit-test b/debian/jit-test
new file mode 100644 (file)
index 0000000..f133c26
--- /dev/null
@@ -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 (file)
index 0000000..e476e08
--- /dev/null
@@ -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 (file)
index 0000000..df85ecf
--- /dev/null
@@ -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 (file)
index 0000000..551389b
--- /dev/null
@@ -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 (file)
index 0000000..8b2d8a9
--- /dev/null
@@ -0,0 +1 @@
+pcredemo.c
diff --git a/debian/libpcre3-dev.install b/debian/libpcre3-dev.install
new file mode 100644 (file)
index 0000000..52ce644
--- /dev/null
@@ -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 (file)
index 0000000..eee7a81
--- /dev/null
@@ -0,0 +1,2 @@
+debian/pcre-config.1
+
diff --git a/debian/libpcre3-udeb.install b/debian/libpcre3-udeb.install
new file mode 100644 (file)
index 0000000..d46404c
--- /dev/null
@@ -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 (file)
index 0000000..9920811
--- /dev/null
@@ -0,0 +1,2 @@
+README AUTHORS NEWS
+
diff --git a/debian/libpcre3.install b/debian/libpcre3.install
new file mode 100644 (file)
index 0000000..2166583
--- /dev/null
@@ -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 (file)
index 0000000..29968c8
--- /dev/null
@@ -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 (file)
index 0000000..f91755e
--- /dev/null
@@ -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 (file)
index 0000000..1ab979f
--- /dev/null
@@ -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 (file)
index 0000000..9920811
--- /dev/null
@@ -0,0 +1,2 @@
+README AUTHORS NEWS
+
diff --git a/debian/libpcrecpp0v5.install b/debian/libpcrecpp0v5.install
new file mode 100644 (file)
index 0000000..6b2eb62
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/*/libpcrecpp.so.*
diff --git a/debian/libpcrecpp0v5.symbols b/debian/libpcrecpp0v5.symbols
new file mode 100644 (file)
index 0000000..471ec7c
--- /dev/null
@@ -0,0 +1,87 @@
+libpcrecpp.so.0 libpcrecpp0v5 #MINVER#
+ (c++)"operator<<(std::basic_ostream<char, std::char_traits<char> >&, 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<char, std::char_traits<char>, std::allocator<char> >*) 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<char, std::char_traits<char>, std::allocator<char> >*) 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<char, std::char_traits<char>, std::allocator<char> > 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<char, std::char_traits<char>, std::allocator<char> >*) const@Base" 7.7
+ (c++)"pcrecpp::RE::Rewrite(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, 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<pcrecpp::StringPiece, std::allocator<pcrecpp::StringPiece> >*)@Base" 7.7
+ (c++)"pcrecpp::Scanner::GetNextComments(std::vector<pcrecpp::StringPiece, std::allocator<pcrecpp::StringPiece> >*)@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<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 7.7
+ (c++)"pcrecpp::Scanner::Scanner(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 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<pcrecpp::StringPiece, std::allocator<pcrecpp::StringPiece> >::_M_insert_aux(__gnu_cxx::__normal_iterator<pcrecpp::StringPiece*, std::vector<pcrecpp::StringPiece, std::allocator<pcrecpp::StringPiece> > >, 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 (file)
index 0000000..b3aba7f
--- /dev/null
@@ -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 (file)
index 0000000..f05535b
--- /dev/null
@@ -0,0 +1,47 @@
+From b7537308b7c758f33c347cb0bec62754c43c271f Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+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 (file)
index 0000000..0a6de34
--- /dev/null
@@ -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 (file)
index 0000000..ed5b5c1
--- /dev/null
@@ -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 (file)
index 0000000..f019be6
--- /dev/null
@@ -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 (file)
index 0000000..3c4132b
--- /dev/null
@@ -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 (file)
index 0000000..a38be27
--- /dev/null
@@ -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 (file)
index 0000000..a8c15f3
--- /dev/null
@@ -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 (file)
index 0000000..88c3b95
--- /dev/null
@@ -0,0 +1,100 @@
+From: Philip Hazel <ph10>
+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 (file)
index 0000000..f13a763
--- /dev/null
@@ -0,0 +1,40 @@
+From: Mark Baker <mark@mnb.org.uk>
+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 (file)
index 0000000..a11143a
--- /dev/null
@@ -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 <matthew@debian.org>
+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 (file)
index 0000000..64786a0
--- /dev/null
@@ -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 (file)
index 0000000..84fbb02
--- /dev/null
@@ -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 (file)
index 0000000..d499096
--- /dev/null
@@ -0,0 +1,33 @@
+Description: Disable JIT on x32, needs explicit porting to ILP32 amd64, FPU-less PowerPC.
+Author: Thorsten Glaser <tg@mirbsd.org>, Roland Stigge <stigge@antcom.de>
+
+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 (file)
index 0000000..5a8657b
--- /dev/null
@@ -0,0 +1,385 @@
+From: Mark Baker <mark@mnb.org.uk>
+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 (file)
index 0000000..4012369
--- /dev/null
@@ -0,0 +1,26 @@
+From: Mark Baker <mark@mnb.org.uk>
+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 (file)
index 0000000..587e8eb
--- /dev/null
@@ -0,0 +1,31 @@
+From: Mark Baker <mark@mnb.org.uk>
+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 (file)
index 0000000..b766780
--- /dev/null
@@ -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 (file)
index 0000000..cbdae2a
--- /dev/null
@@ -0,0 +1,21 @@
+From: Mark Baker <mark@mnb.org.uk>
+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 (file)
index 0000000..fbcd559
--- /dev/null
@@ -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 <mark@mnb.org.uk>,
+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 (file)
index 0000000..69e99f6
--- /dev/null
@@ -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 (file)
index 0000000..b0d181b
--- /dev/null
@@ -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 (file)
index 0000000..5a10140
--- /dev/null
@@ -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 (executable)
index 0000000..7e53492
--- /dev/null
@@ -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 (file)
index 0000000..163aaf8
--- /dev/null
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/options b/debian/source/options
new file mode 100644 (file)
index 0000000..1017a30
--- /dev/null
@@ -0,0 +1,2 @@
+compression = "gzip"
+compression-level = 9
diff --git a/debian/watch b/debian/watch
new file mode 100644 (file)
index 0000000..3209506
--- /dev/null
@@ -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 (file)
index 0000000..34e1c60
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+GREP=pcregrep zgrep "$@"