commit:     a0bae155d65b5fd1ed4be98f52ec47012d39156a
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Mon May  6 19:49:16 2019 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed May  8 17:03:37 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a0bae155

net-misc/vde: Fix build with >=dev-libs/openssl-1.1

Closes: https://bugs.gentoo.org/673928
Package-Manager: Portage-2.3.66, Repoman-2.3.12
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 net-misc/vde/files/vde-2.3.2-openssl-1.1.patch | 104 +++++++++++++++++++++++++
 net-misc/vde/vde-2.3.2-r4.ebuild               |   5 ++
 2 files changed, 109 insertions(+)

diff --git a/net-misc/vde/files/vde-2.3.2-openssl-1.1.patch 
b/net-misc/vde/files/vde-2.3.2-openssl-1.1.patch
new file mode 100644
index 00000000000..b490b93350f
--- /dev/null
+++ b/net-misc/vde/files/vde-2.3.2-openssl-1.1.patch
@@ -0,0 +1,104 @@
+From 5f2c4c7b67617991af65798a4d177ada90f7e463 Mon Sep 17 00:00:00 2001
+From: Sebastian Andrzej Siewior <sebast...@breakpoint.cc>
+Date: Fri, 2 Sep 2016 19:52:49 +0000
+Subject: [PATCH] vde_cryptcab: compile against openssl 1.1.0
+
+Signed-off-by: Sebastian Andrzej Siewior <sebast...@breakpoint.cc>
+---
+ src/vde_cryptcab/cryptcab.c | 30 +++++++++++++++++++-----------
+ 1 file changed, 19 insertions(+), 11 deletions(-)
+
+diff --git a/src/vde_cryptcab/cryptcab.c b/src/vde_cryptcab/cryptcab.c
+index c5b4474..a2780f1 100644
+--- a/src/vde_cryptcab/cryptcab.c      2011-11-23 16:41:17.000000000 +0000
++++ b/src/vde_cryptcab/cryptcab.c      2017-03-20 22:54:20.452975075 +0000
+@@ -22,7 +22,7 @@
+       exit(1);
+ }
+       
+-static EVP_CIPHER_CTX ctx;
++static EVP_CIPHER_CTX *ctx;
+ static int ctx_initialized = 0;
+ static int encryption_disabled = 0;
+ static int nfd;
+@@ -30,6 +30,10 @@
+ static struct vde_open_args open_args={.port=0,.group=NULL,.mode=0700};
+ static int verbose = 0;
+ 
++#if OPENSSL_VERSION_NUMBER < 0x10100000
++#define EVP_CIPHER_CTX_reset(x)       EVP_CIPHER_CTX_cleanup(x)
++#endif
++
+ void vc_printlog(int priority, const char *format, ...)
+ {
+       va_list arg;
+@@ -103,19 +107,21 @@
+       }
+ 
+       if (!ctx_initialized) {
+-              EVP_CIPHER_CTX_init (&ctx);
++              ctx = EVP_CIPHER_CTX_new ();
++              if (!ctx)
++                      return -1;
+               ctx_initialized = 1;
+       }
+       
+-      EVP_EncryptInit (&ctx, EVP_bf_cbc (), p->key, p->iv);
+-      if (EVP_EncryptUpdate (&ctx, dst, &olen, src, len) != 1)
++      EVP_EncryptInit (ctx, EVP_bf_cbc (), p->key, p->iv);
++      if (EVP_EncryptUpdate (ctx, dst, &olen, src, len) != 1)
+       {
+               fprintf (stderr,"error in encrypt update\n");
+               olen = -1;
+               goto cleanup;
+       }
+ 
+-      if (EVP_EncryptFinal (&ctx, dst + olen, &tlen) != 1)
++      if (EVP_EncryptFinal (ctx, dst + olen, &tlen) != 1)
+       {
+               fprintf (stderr,"error in encrypt final\n");
+               olen = -1;
+@@ -124,7 +130,7 @@
+       olen += tlen;
+ 
+ cleanup:
+-      EVP_CIPHER_CTX_cleanup(&ctx);   
++      EVP_CIPHER_CTX_reset(ctx);
+       return olen;
+ }
+ 
+@@ -138,19 +144,21 @@
+       }
+       
+       if (!ctx_initialized) {
+-              EVP_CIPHER_CTX_init (&ctx);
++              ctx = EVP_CIPHER_CTX_new ();
++              if (!ctx)
++                      return -1;
+               ctx_initialized = 1;
+       }
+ 
+-      EVP_DecryptInit (&ctx, EVP_bf_cbc (), p->key, p->iv);
+-      if (EVP_DecryptUpdate (&ctx, dst, &olen, src, len) != 1)
++      EVP_DecryptInit (ctx, EVP_bf_cbc (), p->key, p->iv);
++      if (EVP_DecryptUpdate (ctx, dst, &olen, src, len) != 1)
+       {
+               fprintf (stderr,"error in decrypt update\n");
+               olen = -1;
+               goto cleanup;
+       }
+ 
+-      if (EVP_DecryptFinal (&ctx, dst + olen, &tlen) != 1)
++      if (EVP_DecryptFinal (ctx, dst + olen, &tlen) != 1)
+       {
+               fprintf (stderr,"error in decrypt final\n");
+               olen = -1;
+@@ -159,7 +167,7 @@
+       olen += tlen;
+ 
+ cleanup:
+-      EVP_CIPHER_CTX_cleanup(&ctx);   
++      EVP_CIPHER_CTX_reset (ctx);
+       return olen;
+ }
+ 

diff --git a/net-misc/vde/vde-2.3.2-r4.ebuild b/net-misc/vde/vde-2.3.2-r4.ebuild
index f5df46fa334..93a75bf2b54 100644
--- a/net-misc/vde/vde-2.3.2-r4.ebuild
+++ b/net-misc/vde/vde-2.3.2-r4.ebuild
@@ -39,6 +39,11 @@ pkg_setup() {
        use python && python-single-r1_pkg_setup
 }
 
+src_prepare() {
+       default
+       has_version ">=dev-libs/openssl-1.1.0" && eapply 
"${FILESDIR}/${P}-openssl-1.1.patch"
+}
+
 src_configure() {
        filter-flags -O0 -Os
        econf \

Reply via email to