Skip to content

Commit

Permalink
pcre: 8.39 -> 8.40 + security fix
Browse files Browse the repository at this point in the history
CVE-2017-7186

refs NixOS/security#57 #24319

(cherry picked from commit 6b9c81a)
  • Loading branch information
globin committed Mar 26, 2017
1 parent 4368adb commit 7f42728
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 2 deletions.
52 changes: 52 additions & 0 deletions pkgs/development/libraries/pcre/CVE-2017-7186.patch
@@ -0,0 +1,52 @@
--- a/pcre_internal.h 2016/05/21 13:34:44 1649
+++ b/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
--- a/pcre_ucd.c 2014/06/19 07:51:39 1490
+++ b/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):
6 changes: 4 additions & 2 deletions pkgs/development/libraries/pcre/default.nix
Expand Up @@ -7,7 +7,7 @@ with stdenv.lib;
assert elem variant [ null "cpp" "pcre16" "pcre32" ];

let
version = "8.39";
version = "8.40";
pname = if (variant == null) then "pcre"
else if (variant == "cpp") then "pcre-cpp"
else variant;
Expand All @@ -17,7 +17,7 @@ in stdenv.mkDerivation rec {

src = fetchurl {
url = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-${version}.tar.bz2";
sha256 = "12wyajlqx2v7dsh39ra9v9m5hibjkrl129q90bp32c28haghjn5q";
sha256 = "1x7lpjn7jhk0n3sdvggxrlrhab8kkfjwl7qix0ypw9nlx8lpmqh0";
};

outputs = [ "bin" "dev" "out" "doc" "man" ];
Expand All @@ -29,6 +29,8 @@ in stdenv.mkDerivation rec {
]
++ optional (variant != null) "--enable-${variant}";

patches = [ ./CVE-2017-7186.patch ];

doCheck = with stdenv; !(isCygwin || isFreeBSD);
# XXX: test failure on Cygwin
# we are running out of stack on both freeBSDs on Hydra
Expand Down

5 comments on commit 7f42728

@FRidh
Copy link
Member

@FRidh FRidh commented on 7f42728 Mar 29, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@globin
Copy link
Member Author

@globin globin commented on 7f42728 Mar 29, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm pretty sure that mostly only ghc timed out but the log isn't available anymore so I can't check but I'll build that in a sec and then restart the builds.

@FRidh
Copy link
Member

@FRidh FRidh commented on 7f42728 Mar 29, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we force restart those jobs then?

Edit:

okay

@globin
Copy link
Member Author

@globin globin commented on 7f42728 Mar 29, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll test first

@globin
Copy link
Member Author

@globin globin commented on 7f42728 Mar 29, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems to work here, restarting.

Please sign in to comment.