net-irc/epic5: Debian patch for openssl-1.1
authorPacho Ramos <pacho@gentoo.org>
Sat, 26 Jan 2019 16:36:02 +0000 (17:36 +0100)
committerPacho Ramos <pacho@gentoo.org>
Sat, 26 Jan 2019 16:36:20 +0000 (17:36 +0100)
Closes: https://bugs.gentoo.org/676286
Package-Manager: Portage-2.3.58, Repoman-2.3.12
Signed-off-by: Pacho Ramos <pacho@gentoo.org>
net-irc/epic5/epic5-2.0.1.ebuild
net-irc/epic5/files/epic5-2.0.1-openssl-1.1.patch [new file with mode: 0644]

index ac3c4b0060af4c89fde81dbc86ce19f655420240..e5ebd880946e4452244d47079c385707bdb9036c 100644 (file)
@@ -33,6 +33,11 @@ DEPEND="${RDEPEND}
 
 S="${WORKDIR}/${P}"
 
+PATCHES=(
+       # From Debian
+       "${FILESDIR}/${P}-openssl-1.1.patch"
+)
+
 src_configure() {
        # Because of our REQUIRED_USE constraints above, we know that
        # ruby_get_use_implementations will only ever return one ruby
diff --git a/net-irc/epic5/files/epic5-2.0.1-openssl-1.1.patch b/net-irc/epic5/files/epic5-2.0.1-openssl-1.1.patch
new file mode 100644 (file)
index 0000000..254035e
--- /dev/null
@@ -0,0 +1,77 @@
+Index: epic5-2.0/source/crypto.c
+===================================================================
+--- epic5-2.0.orig/source/crypto.c
++++ epic5-2.0/source/crypto.c
+@@ -282,9 +282,9 @@ static char *      decipher_evp (const unsign
+       unsigned char   *iv = NULL;
+       unsigned long errcode;
+       int     outlen2;
+-        EVP_CIPHER_CTX a;
+-        EVP_CIPHER_CTX_init(&a);
+-      EVP_CIPHER_CTX_set_padding(&a, 0);
++      EVP_CIPHER_CTX *a = EVP_CIPHER_CTX_new();
++      EVP_CIPHER_CTX_init(a);
++      EVP_CIPHER_CTX_set_padding(a, 0);
+       if (ivsize > 0)
+               iv = new_malloc(ivsize);
+@@ -292,18 +292,19 @@ static char *    decipher_evp (const unsign
+       if (ivsize > 0)
+               memcpy(iv, ciphertext, ivsize);
+-        EVP_DecryptInit_ex(&a, type, NULL, NULL, iv);
+-      EVP_CIPHER_CTX_set_key_length(&a, passwdlen);
+-      EVP_CIPHER_CTX_set_padding(&a, 0);
+-        EVP_DecryptInit_ex(&a, NULL, NULL, passwd, NULL);
++      EVP_DecryptInit_ex(a, type, NULL, NULL, iv);
++      EVP_CIPHER_CTX_set_key_length(a, passwdlen);
++      EVP_CIPHER_CTX_set_padding(a, 0);
++      EVP_DecryptInit_ex(a, NULL, NULL, passwd, NULL);
+-        if (EVP_DecryptUpdate(&a, outbuf, outlen, ciphertext, cipherlen) != 1)
++      if (EVP_DecryptUpdate(a, outbuf, outlen, ciphertext, cipherlen) != 1)
+               yell("EVP_DecryptUpdate died.");
+-      if (EVP_DecryptFinal_ex(&a, outbuf + (*outlen), &outlen2) != 1)
++      if (EVP_DecryptFinal_ex(a, outbuf + (*outlen), &outlen2) != 1)
+               yell("EVP_DecryptFinal_Ex died.");
+       *outlen += outlen2;
+-        EVP_CIPHER_CTX_cleanup(&a);
++      EVP_CIPHER_CTX_cleanup(a);
++      EVP_CIPHER_CTX_free(a);
+       ERR_load_crypto_strings();
+       while ((errcode = ERR_get_error()))
+@@ -454,9 +455,9 @@ static char *      cipher_evp (const unsigned
+       unsigned long errcode;
+       u_32int_t       randomval;
+       int             iv_count;
+-        EVP_CIPHER_CTX a;
+-        EVP_CIPHER_CTX_init(&a);
+-      EVP_CIPHER_CTX_set_padding(&a, 0);
++      EVP_CIPHER_CTX *a = EVP_CIPHER_CTX_new();
++      EVP_CIPHER_CTX_init(a);
++      EVP_CIPHER_CTX_set_padding(a, 0);
+       if (ivsize < 0)
+               ivsize = 0;             /* Shenanigans! */
+@@ -480,12 +481,13 @@ static char *    cipher_evp (const unsigned
+       if (iv)
+               memcpy(outbuf, iv, ivsize);
+-        EVP_EncryptInit_ex(&a, type, NULL, NULL, iv);
+-      EVP_CIPHER_CTX_set_key_length(&a, passwdlen);
+-        EVP_EncryptInit_ex(&a, NULL, NULL, passwd, NULL);
+-        EVP_EncryptUpdate(&a, outbuf + ivsize, &outlen, plaintext, plaintextlen);
+-      EVP_EncryptFinal_ex(&a, outbuf + ivsize + outlen, &extralen);
+-        EVP_CIPHER_CTX_cleanup(&a);
++      EVP_EncryptInit_ex(a, type, NULL, NULL, iv);
++      EVP_CIPHER_CTX_set_key_length(a, passwdlen);
++      EVP_EncryptInit_ex(a, NULL, NULL, passwd, NULL);
++      EVP_EncryptUpdate(a, outbuf + ivsize, &outlen, plaintext, plaintextlen);
++      EVP_EncryptFinal_ex(a, outbuf + ivsize + outlen, &extralen);
++      EVP_CIPHER_CTX_cleanup(a);
++      EVP_CIPHER_CTX_free(a);
+       outlen += extralen;
+       ERR_load_crypto_strings();