Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Nov 2018 17:35:57 +0000 (UTC)
From:      Tobias Kortkamp <tobik@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r485334 - in head/security/botan110: . files
Message-ID:  <201811191735.wAJHZvZM066730@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tobik
Date: Mon Nov 19 17:35:57 2018
New Revision: 485334
URL: https://svnweb.freebsd.org/changeset/ports/485334

Log:
  security/botan110: Attempt to unbreak consumers with OpenSSL 1.1.1
  
  The OpenSSL 1.1.1 support added in ports r483489 was incomplete and
  leads to segfaults and build failures in consumers [1,2].  Amend
  the patch to actually allocate some memory.
  
  While here hook up the test suite.
  
  [1] http://beefy11.nyi.freebsd.org/data/head-i386-default/p483632_s339979/logs/bundy-0.20170618_10.log
  [2] http://beefy11.nyi.freebsd.org/data/head-i386-default/p483632_s339979/logs/monotone-1.1_13.log
  
  PR:		229030
  Approved by:	lapo@lapo.it (maintainer timeout, 2 weeks)
  Pointy hat:	fluffy

Modified:
  head/security/botan110/Makefile
  head/security/botan110/files/extra-patch-openssl11

Modified: head/security/botan110/Makefile
==============================================================================
--- head/security/botan110/Makefile	Mon Nov 19 17:29:51 2018	(r485333)
+++ head/security/botan110/Makefile	Mon Nov 19 17:35:57 2018	(r485334)
@@ -3,6 +3,7 @@
 
 PORTNAME=	botan
 DISTVERSION=	1.10.17
+PORTREVISION=	1
 CATEGORIES=	security
 MASTER_SITES=	http://botan.randombit.net/releases/
 PKGNAMESUFFIX=	110
@@ -24,11 +25,12 @@ HAS_CONFIGURE=	yes
 CONFIGURE_SCRIPT=	configure.py
 CONFIGURE_ARGS=	--prefix=${PREFIX} --cc ${CHOSEN_COMPILER_TYPE} \
 		--with-tr1-implementation=system --with-bzip2 --with-zlib
-MAKE_ARGS=	CXX="${CXX}" LIB_OPT="${CXXFLAGS}"
+MAKE_ARGS=	CXX="${CXX}" CHECK_OPT="${CXXFLAGS}" LIB_OPT="${CXXFLAGS}"
 USE_LDCONFIG=	yes
 PLIST_FILES=	bin/botan-config-1.10 lib/libbotan-1.10.a lib/libbotan-1.10.so lib/libbotan-1.10.so.1 \
 		lib/libbotan-1.10.so.1.17 libdata/pkgconfig/botan-1.10.pc
 SHEBANG_FILES=	configure.py
+TEST_TARGET=	check
 
 DOCSDIR=	${PREFIX}/share/doc/${PORTNAME}-${PORTVERSION}
 PORTDOCS=	*
@@ -56,5 +58,8 @@ post-patch-DOCS-off:
 
 post-install:
 	@(cd "${STAGEDIR}${PREFIX}"; ${FIND} -s include/botan-1.10 -not -type d) >> ${TMPPLIST}
+
+post-test:
+	cd ${WRKSRC} && ${SETENV} LD_LIBRARY_PATH="." ./check --test
 
 .include <bsd.port.post.mk>

Modified: head/security/botan110/files/extra-patch-openssl11
==============================================================================
--- head/security/botan110/files/extra-patch-openssl11	Mon Nov 19 17:29:51 2018	(r485333)
+++ head/security/botan110/files/extra-patch-openssl11	Mon Nov 19 17:35:57 2018	(r485334)
@@ -1,4 +1,4 @@
---- src/engine/openssl/ossl_bc.cpp.orig	2018-10-15 00:16:53 UTC
+--- src/engine/openssl/ossl_bc.cpp.orig	2017-10-02 06:00:00 UTC
 +++ src/engine/openssl/ossl_bc.cpp
 @@ -8,10 +8,6 @@
  #include <botan/internal/openssl_engine.h>
@@ -11,7 +11,7 @@
  namespace Botan {
  
  namespace {
-@@ -44,7 +40,7 @@
+@@ -44,7 +40,7 @@ class EVP_BlockCipher : public BlockCipher
        size_t block_sz;
        Key_Length_Specification cipher_key_spec;
        std::string cipher_name;
@@ -20,49 +20,53 @@
     };
  
  /*
-@@ -59,14 +55,14 @@
+@@ -59,14 +55,15 @@ EVP_BlockCipher::EVP_BlockCipher(const EVP_CIPHER* alg
     if(EVP_CIPHER_mode(algo) != EVP_CIPH_ECB_MODE)
        throw Invalid_Argument("EVP_BlockCipher: Non-ECB EVP was passed in");
  
 -   EVP_CIPHER_CTX_init(&encrypt);
 -   EVP_CIPHER_CTX_init(&decrypt);
-+   EVP_CIPHER_CTX_init(encrypt);
-+   EVP_CIPHER_CTX_init(decrypt);
++   if ((encrypt = EVP_CIPHER_CTX_new()) == NULL)
++      throw Invalid_Argument("EVP_BlockCipher: EVP_CIPHER_CTX_new failed");
++   EVP_EncryptInit_ex(encrypt, algo, 0, 0, 0);
++   EVP_CIPHER_CTX_set_padding(encrypt, 0);
  
 -   EVP_EncryptInit_ex(&encrypt, algo, 0, 0, 0);
 -   EVP_DecryptInit_ex(&decrypt, algo, 0, 0, 0);
-+   EVP_EncryptInit_ex(encrypt, algo, 0, 0, 0);
-+   EVP_DecryptInit_ex(decrypt, algo, 0, 0, 0);
- 
+-
 -   EVP_CIPHER_CTX_set_padding(&encrypt, 0);
 -   EVP_CIPHER_CTX_set_padding(&decrypt, 0);
-+   EVP_CIPHER_CTX_set_padding(encrypt, 0);
++   if ((decrypt = EVP_CIPHER_CTX_new()) == NULL)
++      throw Invalid_Argument("EVP_BlockCipher: EVP_CIPHER_CTX_new failed");
++   EVP_DecryptInit_ex(decrypt, algo, 0, 0, 0);
 +   EVP_CIPHER_CTX_set_padding(decrypt, 0);
     }
  
  /*
-@@ -83,14 +79,14 @@
+@@ -83,14 +80,15 @@ EVP_BlockCipher::EVP_BlockCipher(const EVP_CIPHER* alg
     if(EVP_CIPHER_mode(algo) != EVP_CIPH_ECB_MODE)
        throw Invalid_Argument("EVP_BlockCipher: Non-ECB EVP was passed in");
  
 -   EVP_CIPHER_CTX_init(&encrypt);
 -   EVP_CIPHER_CTX_init(&decrypt);
-+   EVP_CIPHER_CTX_init(encrypt);
-+   EVP_CIPHER_CTX_init(decrypt);
++   if ((encrypt = EVP_CIPHER_CTX_new()) == NULL)
++      throw Invalid_Argument("EVP_BlockCipher: EVP_CIPHER_CTX_new failed");
++   EVP_EncryptInit_ex(encrypt, algo, 0, 0, 0);
++   EVP_CIPHER_CTX_set_padding(encrypt, 0);
  
 -   EVP_EncryptInit_ex(&encrypt, algo, 0, 0, 0);
 -   EVP_DecryptInit_ex(&decrypt, algo, 0, 0, 0);
-+   EVP_EncryptInit_ex(encrypt, algo, 0, 0, 0);
-+   EVP_DecryptInit_ex(decrypt, algo, 0, 0, 0);
- 
+-
 -   EVP_CIPHER_CTX_set_padding(&encrypt, 0);
 -   EVP_CIPHER_CTX_set_padding(&decrypt, 0);
-+   EVP_CIPHER_CTX_set_padding(encrypt, 0);
++   if ((decrypt = EVP_CIPHER_CTX_new()) == NULL)
++      throw Invalid_Argument("EVP_BlockCipher: EVP_CIPHER_CTX_new failed");
++   EVP_DecryptInit_ex(decrypt, algo, 0, 0, 0);
 +   EVP_CIPHER_CTX_set_padding(decrypt, 0);
     }
  
  /*
-@@ -98,8 +94,8 @@
+@@ -98,8 +96,8 @@ EVP_BlockCipher::EVP_BlockCipher(const EVP_CIPHER* alg
  */
  EVP_BlockCipher::~EVP_BlockCipher()
     {
@@ -73,7 +77,7 @@
     }
  
  /*
-@@ -109,7 +105,7 @@
+@@ -109,7 +107,7 @@ void EVP_BlockCipher::encrypt_n(const byte in[], byte 
                                  size_t blocks) const
     {
     int out_len = 0;
@@ -82,7 +86,7 @@
     }
  
  /*
-@@ -119,7 +115,7 @@
+@@ -119,7 +117,7 @@ void EVP_BlockCipher::decrypt_n(const byte in[], byte 
                                  size_t blocks) const
     {
     int out_len = 0;
@@ -91,7 +95,7 @@
     }
  
  /*
-@@ -134,19 +130,19 @@
+@@ -134,19 +132,19 @@ void EVP_BlockCipher::key_schedule(const byte key[], s
        full_key += std::make_pair(key, 8);
        }
     else
@@ -117,7 +121,7 @@
     }
  
  /*
-@@ -154,7 +150,7 @@
+@@ -154,7 +152,7 @@ void EVP_BlockCipher::key_schedule(const byte key[], s
  */
  BlockCipher* EVP_BlockCipher::clone() const
     {
@@ -126,7 +130,7 @@
                                cipher_name,
                                cipher_key_spec.minimum_keylength(),
                                cipher_key_spec.maximum_keylength(),
-@@ -166,16 +162,16 @@
+@@ -166,16 +164,16 @@ BlockCipher* EVP_BlockCipher::clone() const
  */
  void EVP_BlockCipher::clear()
     {
@@ -152,7 +156,7 @@
     }
  
  }
---- src/engine/openssl/ossl_md.cpp.orig	2018-10-15 00:26:19 UTC
+--- src/engine/openssl/ossl_md.cpp.orig	2017-10-02 06:00:00 UTC
 +++ src/engine/openssl/ossl_md.cpp
 @@ -8,10 +8,6 @@
  #include <botan/internal/openssl_engine.h>
@@ -165,7 +169,7 @@
  namespace Botan {
  
  namespace {
-@@ -28,12 +24,12 @@
+@@ -28,12 +24,12 @@ class EVP_HashFunction : public HashFunction
  
        size_t output_length() const
           {
@@ -180,7 +184,7 @@
           }
  
        EVP_HashFunction(const EVP_MD*, const std::string&);
-@@ -44,7 +40,7 @@
+@@ -44,7 +40,7 @@ class EVP_HashFunction : public HashFunction
  
        size_t block_size;
        std::string algo_name;
@@ -189,7 +193,7 @@
     };
  
  /*
-@@ -52,7 +48,7 @@
+@@ -52,7 +48,7 @@ class EVP_HashFunction : public HashFunction
  */
  void EVP_HashFunction::add_data(const byte input[], size_t length)
     {
@@ -198,7 +202,7 @@
     }
  
  /*
-@@ -60,9 +56,9 @@
+@@ -60,9 +56,9 @@ void EVP_HashFunction::add_data(const byte input[], si
  */
  void EVP_HashFunction::final_result(byte output[])
     {
@@ -211,7 +215,7 @@
     }
  
  /*
-@@ -70,8 +66,8 @@
+@@ -70,8 +66,8 @@ void EVP_HashFunction::final_result(byte output[])
  */
  void EVP_HashFunction::clear()
     {
@@ -222,7 +226,7 @@
     }
  
  /*
-@@ -79,7 +75,7 @@
+@@ -79,7 +75,7 @@ void EVP_HashFunction::clear()
  */
  HashFunction* EVP_HashFunction::clone() const
     {
@@ -231,18 +235,19 @@
     return new EVP_HashFunction(algo, name());
     }
  
-@@ -90,8 +86,8 @@
+@@ -90,8 +86,9 @@ EVP_HashFunction::EVP_HashFunction(const EVP_MD* algo,
                                     const std::string& name) :
     algo_name(name)
     {
 -   EVP_MD_CTX_init(&md);
 -   EVP_DigestInit_ex(&md, algo, 0);
-+   EVP_MD_CTX_init(md);
++   if ((md = EVP_MD_CTX_new()) == NULL)
++     throw Invalid_Argument("EVP_HashFunction: EVP_MD_CTX_new failed");
 +   EVP_DigestInit_ex(md, algo, 0);
     }
  
  /*
-@@ -99,7 +95,11 @@
+@@ -99,7 +96,11 @@ EVP_HashFunction::EVP_HashFunction(const EVP_MD* algo,
  */
  EVP_HashFunction::~EVP_HashFunction()
     {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201811191735.wAJHZvZM066730>