gnu: pcre: Patch CVE-2017-7186.
* gnu/packages/patches/pcre-CVE-2017-7186.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/pcre.scm (pcre)[replacement]: New field. (pcre/fixed): New variable.
This commit is contained in:
		
							parent
							
								
									18d0cec29e
								
							
						
					
					
						commit
						a97f0ee136
					
				
					 3 changed files with 67 additions and 0 deletions
				
			
		|  | @ -825,6 +825,7 @@ dist_patch_DATA =						\ | ||||||
|   %D%/packages/patches/patchelf-rework-for-arm.patch		\
 |   %D%/packages/patches/patchelf-rework-for-arm.patch		\
 | ||||||
|   %D%/packages/patches/patchutils-xfail-gendiff-tests.patch	\
 |   %D%/packages/patches/patchutils-xfail-gendiff-tests.patch	\
 | ||||||
|   %D%/packages/patches/patch-hurd-path-max.patch		\
 |   %D%/packages/patches/patch-hurd-path-max.patch		\
 | ||||||
|  |   %D%/packages/patches/pcre-CVE-2017-7186.patch			\
 | ||||||
|   %D%/packages/patches/pcre2-CVE-2017-7186.patch		\
 |   %D%/packages/patches/pcre2-CVE-2017-7186.patch		\
 | ||||||
|   %D%/packages/patches/perl-autosplit-default-time.patch	\
 |   %D%/packages/patches/perl-autosplit-default-time.patch	\
 | ||||||
|   %D%/packages/patches/perl-deterministic-ordering.patch	\
 |   %D%/packages/patches/perl-deterministic-ordering.patch	\
 | ||||||
|  |  | ||||||
							
								
								
									
										56
									
								
								gnu/packages/patches/pcre-CVE-2017-7186.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								gnu/packages/patches/pcre-CVE-2017-7186.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,56 @@ | ||||||
|  | Patch for <https://nvd.nist.gov/vuln/detail?vulnId=CVE-2017-7186> | ||||||
|  | from <https://vcs.pcre.org/pcre?view=revision&revision=1688>. | ||||||
|  | 
 | ||||||
|  | --- trunk/pcre_internal.h	2016/05/21 13:34:44	1649
 | ||||||
|  | +++ trunk/pcre_internal.h	2017/02/24 17:30:30	1688
 | ||||||
|  | @@ -2772,6 +2772,9 @@
 | ||||||
|  |  extern const pcre_uint16 PRIV(ucd_stage2)[]; | ||||||
|  |  extern const pcre_uint32 PRIV(ucp_gentype)[]; | ||||||
|  |  extern const pcre_uint32 PRIV(ucp_gbtable)[]; | ||||||
|  | +#ifdef COMPILE_PCRE32
 | ||||||
|  | +extern const ucd_record  PRIV(dummy_ucd_record)[];
 | ||||||
|  | +#endif
 | ||||||
|  |  #ifdef SUPPORT_JIT | ||||||
|  |  extern const int         PRIV(ucp_typerange)[]; | ||||||
|  |  #endif | ||||||
|  | @@ -2780,9 +2783,15 @@
 | ||||||
|  |  /* UCD access macros */ | ||||||
|  |   | ||||||
|  |  #define UCD_BLOCK_SIZE 128 | ||||||
|  | -#define GET_UCD(ch) (PRIV(ucd_records) + \
 | ||||||
|  | +#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
 | ||||||
|  |          PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \ | ||||||
|  |          UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE]) | ||||||
|  | +        
 | ||||||
|  | +#ifdef COMPILE_PCRE32
 | ||||||
|  | +#define GET_UCD(ch) ((ch > 0x10ffff)? PRIV(dummy_ucd_record) : REAL_GET_UCD(ch))
 | ||||||
|  | +#else
 | ||||||
|  | +#define GET_UCD(ch) REAL_GET_UCD(ch)
 | ||||||
|  | +#endif 
 | ||||||
|  |   | ||||||
|  |  #define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype | ||||||
|  |  #define UCD_SCRIPT(ch)      GET_UCD(ch)->script | ||||||
|  | 
 | ||||||
|  | --- trunk/pcre_ucd.c	2014/06/19 07:51:39	1490
 | ||||||
|  | +++ trunk/pcre_ucd.c	2017/02/24 17:30:30	1688
 | ||||||
|  | @@ -38,6 +38,20 @@
 | ||||||
|  |  const pcre_uint32 PRIV(ucd_caseless_sets)[] = {0}; | ||||||
|  |  #else | ||||||
|  |   | ||||||
|  | +/* If the 32-bit library is run in non-32-bit mode, character values
 | ||||||
|  | +greater than 0x10ffff may be encountered. For these we set up a
 | ||||||
|  | +special record. */
 | ||||||
|  | +
 | ||||||
|  | +#ifdef COMPILE_PCRE32
 | ||||||
|  | +const ucd_record PRIV(dummy_ucd_record)[] = {{
 | ||||||
|  | +  ucp_Common,    /* script */
 | ||||||
|  | +  ucp_Cn,        /* type unassigned */
 | ||||||
|  | +  ucp_gbOther,   /* grapheme break property */
 | ||||||
|  | +  0,             /* case set */
 | ||||||
|  | +  0,             /* other case */
 | ||||||
|  | +  }};
 | ||||||
|  | +#endif
 | ||||||
|  | +
 | ||||||
|  |  /* When recompiling tables with a new Unicode version, please check the | ||||||
|  |  types in this structure definition from pcre_internal.h (the actual | ||||||
|  |  field names will be different): | ||||||
|  | @ -4,6 +4,7 @@ | ||||||
| ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> | ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> | ||||||
| ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> | ||||||
| ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> | ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> | ||||||
|  | ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> | ||||||
| ;;; | ;;; | ||||||
| ;;; This file is part of GNU Guix. | ;;; This file is part of GNU Guix. | ||||||
| ;;; | ;;; | ||||||
|  | @ -33,6 +34,7 @@ | ||||||
|   (package |   (package | ||||||
|    (name "pcre") |    (name "pcre") | ||||||
|    (version "8.40") |    (version "8.40") | ||||||
|  |    (replacement pcre/fixed) | ||||||
|    (source (origin |    (source (origin | ||||||
|             (method url-fetch) |             (method url-fetch) | ||||||
|             (uri (list |             (uri (list | ||||||
|  | @ -70,6 +72,14 @@ POSIX regular expression API.") | ||||||
|    (license license:bsd-3) |    (license license:bsd-3) | ||||||
|    (home-page "http://www.pcre.org/"))) |    (home-page "http://www.pcre.org/"))) | ||||||
| 
 | 
 | ||||||
|  | (define pcre/fixed | ||||||
|  |   (package | ||||||
|  |     (inherit pcre) | ||||||
|  |     (replacement #f) | ||||||
|  |     (source (origin | ||||||
|  |               (inherit (package-source pcre)) | ||||||
|  |               (patches (search-patches "pcre-CVE-2017-7186.patch")))))) | ||||||
|  | 
 | ||||||
| (define-public pcre2 | (define-public pcre2 | ||||||
|   (package |   (package | ||||||
|     (name "pcre2") |     (name "pcre2") | ||||||
|  |  | ||||||
		Reference in a new issue