cryptopp: 5.6.2 -> 5.6.4

Fix CVE-2016-3995. #18856

Remove broken flag. #19040

cc #19009
This commit is contained in:
Franz Pletz 2016-09-29 23:07:56 +02:00
parent a34ec1517f
commit eb6a1c9238
No known key found for this signature in database
GPG Key ID: 846FDED7792617B4
4 changed files with 46 additions and 37 deletions

View File

@ -0,0 +1,15 @@
diff --git a/GNUmakefile b/GNUmakefile
index 4de9d10..ff4789a 100755
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -271,8 +271,8 @@ endif # OpenMP
endif # IS_LINUX
ifneq ($(IS_DARWIN),0)
-AR = libtool
-ARFLAGS = -static -o
+AR = ar
+ARFLAGS = cru
CXX ?= c++
ifeq ($(IS_GCC_29),1)
CXXFLAGS += -fno-coalesce-templates -fno-coalesce-static-vtables

View File

@ -1,13 +0,0 @@
--- crypto++/GNUmakefile 2013-02-20 10:30:52.000000000 -0500
+++ crypto++/GNUmakefile 2015-05-07 18:34:25.000000000 -0500
@@ -87,8 +87,8 @@
endif
ifeq ($(UNAME),Darwin)
-AR = libtool
-ARFLAGS = -static -o
+AR = ar
+ARFLAGS = cru
CXX = c++
IS_GCC2 = $(shell $(CXX) -v 2>&1 | $(EGREP) -c gcc-932)
ifeq ($(IS_GCC2),1)

View File

@ -1,16 +1,18 @@
{ fetchurl, stdenv, unzip }:
stdenv.mkDerivation rec {
name = "crypto++-5.6.2";
name = "crypto++-${version}";
majorVersion = "5.6";
version = "${majorVersion}.4";
src = fetchurl {
url = "mirror://sourceforge/cryptopp/cryptopp562.zip";
sha256 = "0x1mqpz1v071cfrw4grbw7z734cxnpry1qh2b6rsmcx6nkyd5gsw";
url = "mirror://sourceforge/cryptopp/cryptopp564.zip";
sha256 = "1msar24a38rxzq0xgmjf09hzaw2lv6s48vnbbhfrf5awn1vh6hxy";
};
patches = with stdenv;
lib.optional (system != "i686-cygwin") ./dll.patch
++ lib.optional isDarwin ./GNUmakefile.patch;
++ lib.optional isDarwin ./GNUmakefile-darwin.patch;
buildInputs = [ unzip ];
@ -30,14 +32,18 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
makeFlags = "PREFIX=$(out)";
buildFlags = "libcryptopp.so";
makeFlags = [ "PREFIX=$(out)" ];
buildFlags = [ "libcryptopp.so" ];
installFlags = [ "LDCONF=true" ];
doCheck = true;
checkPhase = "LD_LIBRARY_PATH=`pwd` make test";
# prefer -fPIC and .so to .a; cryptotest.exe seems superfluous
postInstall = ''rm "$out"/lib/*.a -r "$out/bin" '';
postInstall = ''
rm "$out"/lib/*.a -r "$out/bin"
ln -sf "$out"/lib/libcryptopp.so.${version} "$out"/lib/libcryptopp.so.${majorVersion}
'';
meta = with stdenv.lib; {
description = "Crypto++, a free C++ class library of cryptographic schemes";
@ -45,8 +51,5 @@ stdenv.mkDerivation rec {
license = licenses.boost;
platforms = platforms.all;
maintainers = [ ];
# Marked as broken due to needing an update for security issues.
# See: https://github.com/NixOS/nixpkgs/issues/18856
broken = true;
};
}

View File

@ -1,19 +1,10 @@
Get rid of Windows-specific stuff.
--- crypto++/dll.cpp 2009-03-01 19:44:02.000000000 +0100
+++ crypto++/dll.cpp 2009-08-11 00:49:34.000000000 +0200
@@ -39,7 +39,7 @@ NAMESPACE_END
#endif
-#ifdef CRYPTOPP_EXPORTS
+#if defined CRYPTOPP_EXPORTS && defined _MSC_VER
USING_NAMESPACE(CryptoPP)
--- crypto++/GNUmakefile 2009-03-15 02:48:02.000000000 +0100
+++ crypto++/GNUmakefile 2009-08-11 01:23:09.000000000 +0200
@@ -136,7 +136,7 @@ nolib: $(OBJS) # makes it faster to tes
diff --git a/GNUmakefile b/GNUmakefile
index 4de9d10..ff4789a 100755
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -656,7 +656,7 @@ nolib: $(OBJS)
dll: cryptest.import.exe dlltest.exe
cryptopp.dll: $(DLLOBJS)
@ -22,3 +13,16 @@ Get rid of Windows-specific stuff.
libcryptopp.import.a: $(LIBIMPORTOBJS)
$(AR) $(ARFLAGS) $@ $(LIBIMPORTOBJS)
diff --git a/dll.cpp b/dll.cpp
index 72dade9..b5097ab 100644
--- a/dll.cpp
+++ b/dll.cpp
@@ -48,7 +48,7 @@ NAMESPACE_END
#endif
-#ifdef CRYPTOPP_EXPORTS
+#if defined CRYPTOPP_EXPORTS && defined _MSC_VER
USING_NAMESPACE(CryptoPP)