diff options
Diffstat (limited to 'debian/patches')
-rw-r--r-- | debian/patches/Fix-silly-quantifier-size-check.patch | 100 | ||||
-rw-r--r-- | debian/patches/PCRE6_compatible_API.patch | 40 | ||||
-rw-r--r-- | debian/patches/cve-2014-8964.patch | 23 | ||||
-rw-r--r-- | debian/patches/no_jit_ppc64el.patch | 18 | ||||
-rw-r--r-- | debian/patches/pcre_info.patch | 389 | ||||
-rw-r--r-- | debian/patches/pcregrep.1-patch | 26 | ||||
-rw-r--r-- | debian/patches/pcreposix.patch | 31 | ||||
-rw-r--r-- | debian/patches/series | 8 | ||||
-rw-r--r-- | debian/patches/soname.patch | 19 |
9 files changed, 654 insertions, 0 deletions
diff --git a/debian/patches/Fix-silly-quantifier-size-check.patch b/debian/patches/Fix-silly-quantifier-size-check.patch new file mode 100644 index 0000000..88c3b95 --- /dev/null +++ b/debian/patches/Fix-silly-quantifier-size-check.patch @@ -0,0 +1,100 @@ +From: Philip Hazel <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 index 0000000..f13a763 --- /dev/null +++ b/debian/patches/PCRE6_compatible_API.patch @@ -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/cve-2014-8964.patch b/debian/patches/cve-2014-8964.patch new file mode 100644 index 0000000..64786a0 --- /dev/null +++ b/debian/patches/cve-2014-8964.patch @@ -0,0 +1,23 @@ +Description: CVE-2014-8964, heap buffer overflow + Heap buffer overflow if an assertion with a zero minimum repeat is used as + the condition in a conditional group. +Origin: upstream http://bugs.exim.org/show_bug.cgi?id=1546 +Bug: http://bugs.exim.org/show_bug.cgi?id=1546 +Applied-Upstream: Yes, after 8.36 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/pcre_exec.c ++++ b/pcre_exec.c +@@ -1404,8 +1404,11 @@ + condition = TRUE; + + /* Advance ecode past the assertion to the start of the first branch, +- but adjust it so that the general choosing code below works. */ ++ but adjust it so that the general choosing code below works. If the ++ assertion has a quantifier that allows zero repeats we must skip over ++ the BRAZERO. This is a lunatic thing to do, but somebody did! */ + ++ if (*ecode == OP_BRAZERO) ecode++; + ecode += GET(ecode, 1); + while (*ecode == OP_ALT) ecode += GET(ecode, 1); + ecode += 1 + LINK_SIZE - PRIV(OP_lengths)[condcode]; diff --git a/debian/patches/no_jit_ppc64el.patch b/debian/patches/no_jit_ppc64el.patch new file mode 100644 index 0000000..cf600a3 --- /dev/null +++ b/debian/patches/no_jit_ppc64el.patch @@ -0,0 +1,18 @@ +Description: Disable JIT on ppc64el, needs explicit porting to ELFv2. +Author: Adam Conrad <adconrad@ubuntu.com> + +--- a/sljit/sljitConfigInternal.h ++++ b/sljit/sljitConfigInternal.h +@@ -109,7 +109,11 @@ + #elif defined (__aarch64__) + #define SLJIT_CONFIG_ARM_64 1 + #elif defined(__ppc64__) || defined(__powerpc64__) || defined(_ARCH_PPC64) || (defined(_POWER) && defined(__64BIT__)) +-#define SLJIT_CONFIG_PPC_64 1 ++# if _CALL_ELF != 2 ++# define SLJIT_CONFIG_PPC_64 1 ++# else ++# define SLJIT_CONFIG_UNSUPPORTED 1 ++# endif + #elif defined(__ppc__) || defined(__powerpc__) || defined(_ARCH_PPC) || defined(_ARCH_PWR) || defined(_ARCH_PWR2) || defined(_POWER) + #define SLJIT_CONFIG_PPC_32 1 + #elif defined(__mips__) && !defined(_LP64) diff --git a/debian/patches/pcre_info.patch b/debian/patches/pcre_info.patch new file mode 100644 index 0000000..a241224 --- /dev/null +++ b/debian/patches/pcre_info.patch @@ -0,0 +1,389 @@ +From: Mark Baker <mark@mnb.org.uk> +Description: Restore obsolete pcre_info() API for compatiblity + +--- a/Makefile.am ++++ b/Makefile.am +@@ -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 \ +--- a/Makefile.in ++++ b/Makefile.in +@@ -216,11 +216,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 \ +@@ -230,6 +230,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 \ +@@ -249,7 +250,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 $@ +@@ -447,11 +448,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 +@@ -465,7 +466,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) \ +@@ -473,7 +474,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) \ +@@ -483,7 +484,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) \ +@@ -491,7 +492,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) \ +@@ -820,9 +821,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@ +@@ -832,8 +830,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@ +@@ -976,7 +972,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'. +@@ -1081,6 +1077,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 \ +@@ -1098,7 +1095,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 + +@@ -1129,7 +1126,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 + +@@ -1160,7 +1157,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 + +@@ -1215,7 +1212,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 \ +@@ -1301,8 +1298,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 +@@ -1353,7 +1350,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 $@ +@@ -1414,19 +1411,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) +@@ -1487,31 +1484,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) +@@ -1612,6 +1609,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@ +@@ -1715,6 +1713,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 +@@ -2992,8 +2997,8 @@ + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +-@WITH_GCOV_FALSE@clean-local: + @WITH_GCOV_FALSE@distclean-local: ++@WITH_GCOV_FALSE@clean-local: + clean: clean-am + + clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ +--- /dev/null ++++ b/pcre_info.c +@@ -0,0 +1,90 @@ ++/************************************************* ++* Perl-Compatible Regular Expressions * ++*************************************************/ ++ ++/* PCRE is a library of functions to support regular expressions whose syntax ++and semantics are as close as possible to those of the Perl 5 language. ++ ++ Written by Philip Hazel ++ Copyright (c) 1997-2009 University of Cambridge ++ ++----------------------------------------------------------------------------- ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions are met: ++ ++ * Redistributions of source code must retain the above copyright notice, ++ this list of conditions and the following disclaimer. ++ ++ * Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++ * Neither the name of the University of Cambridge nor the names of its ++ contributors may be used to endorse or promote products derived from ++ this software without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ++LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ++POSSIBILITY OF SUCH DAMAGE. ++----------------------------------------------------------------------------- ++*/ ++ ++ ++/* This module contains the external function pcre_info(), which gives some ++information about a compiled pattern. However, use of this function is now ++deprecated, as it has been superseded by pcre_fullinfo(). */ ++ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include "pcre_internal.h" ++ ++ ++/************************************************* ++* (Obsolete) Return info about compiled pattern * ++*************************************************/ ++ ++/* This is the original "info" function. It picks potentially useful data out ++of the private structure, but its interface was too rigid. It remains for ++backwards compatibility. The public options are passed back in an int - though ++the re->options field has been expanded to a long int, all the public options ++at the low end of it, and so even on 16-bit systems this will still be OK. ++Therefore, I haven't changed the API for pcre_info(). ++ ++Arguments: ++ argument_re points to compiled code ++ optptr where to pass back the options ++ first_byte where to pass back the first character, ++ or -1 if multiline and all branches start ^, ++ or -2 otherwise ++ ++Returns: number of capturing subpatterns ++ or negative values on error ++*/ ++ ++PCRE_EXP_DEFN int PCRE_CALL_CONVENTION ++pcre_info(const pcre *argument_re, int *optptr, int *first_byte) ++{ ++const real_pcre *re = (const real_pcre *)argument_re; ++if (re == NULL) return PCRE_ERROR_NULL; ++if (re->magic_number != MAGIC_NUMBER) ++ return PCRE_ERROR_BADMAGIC; ++ ++if (optptr != NULL) *optptr = (int)(re->options & PUBLIC_COMPILE_OPTIONS); ++if (first_byte != NULL) ++ *first_byte = ((re->flags & PCRE_FIRSTSET) != 0)? re->first_char : ++ ((re->flags & PCRE_STARTLINE) != 0)? -1 : -2; ++return re->top_bracket; ++} ++ ++/* End of pcre_info.c */ diff --git a/debian/patches/pcregrep.1-patch b/debian/patches/pcregrep.1-patch new file mode 100644 index 0000000..e7328be --- /dev/null +++ b/debian/patches/pcregrep.1-patch @@ -0,0 +1,26 @@ +From: Mark Baker <mark@mnb.org.uk> +Description: Mention zpcregrep wrapper script in pcregrep man page. + + +Index: pcre-8.30/doc/pcregrep.1 +=================================================================== +--- pcre-8.30.orig/doc/pcregrep.1 2011-09-11 16:28:04.000000000 +0200 ++++ pcre-8.30/doc/pcregrep.1 2012-03-23 11:05:02.276360705 +0100 +@@ -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 +@@ -82,6 +83,9 @@ + If the \fBLC_ALL\fP or \fBLC_CTYPE\fP environment variable is set, + \fBpcregrep\fP uses the value to set a locale when calling the PCRE library. + The \fB--locale\fP option can be used to override this. ++.P ++\fBzpcregrep\fR is a wrapper script that allows pcregrep to work on ++gzip compressed files. + . + . + .SH "SUPPORT FOR COMPRESSED FILES" diff --git a/debian/patches/pcreposix.patch b/debian/patches/pcreposix.patch new file mode 100644 index 0000000..587e8eb --- /dev/null +++ b/debian/patches/pcreposix.patch @@ -0,0 +1,31 @@ +From: Mark Baker <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 index 0000000..8892f49 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,8 @@ +PCRE6_compatible_API.patch +pcreposix.patch +pcre_info.patch +pcregrep.1-patch +soname.patch +no_jit_ppc64el.patch +Fix-silly-quantifier-size-check.patch +cve-2014-8964.patch diff --git a/debian/patches/soname.patch b/debian/patches/soname.patch new file mode 100644 index 0000000..cddd9b0 --- /dev/null +++ b/debian/patches/soname.patch @@ -0,0 +1,19 @@ +From: Mark Baker <mark@mnb.org.uk> +Description: Change soname to what debian use +--- a/configure.ac ++++ b/configure.ac +@@ -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:3:2]) +-m4_define(libpcre16_version, [2:3:2]) +-m4_define(libpcre32_version, [0:3:0]) +-m4_define(libpcreposix_version, [0:2:0]) ++m4_define(libpcre_version, [16:1:13]) ++m4_define(libpcre16_version, [16:1:13]) ++m4_define(libpcre32_version, [16:1:13]) ++m4_define(libpcreposix_version, [16:1:13]) + m4_define(libpcrecpp_version, [0:0:0]) + + AC_PREREQ(2.57) |