Date: Thursday, March 16, 2017 @ 19:30:10 Author: jelle Revision: 216795
upgpkg: openipmi 2.0.22-2 openssl 1.1.0 rebuild Added: openipmi/trunk/0001-Add-openssl-1.1.0-support.patch Modified: openipmi/trunk/PKGBUILD --------------------------------------+ 0001-Add-openssl-1.1.0-support.patch | 184 +++++++++++++++++++++++++++++++++ PKGBUILD | 9 + 2 files changed, 190 insertions(+), 3 deletions(-) Added: 0001-Add-openssl-1.1.0-support.patch =================================================================== --- 0001-Add-openssl-1.1.0-support.patch (rev 0) +++ 0001-Add-openssl-1.1.0-support.patch 2017-03-16 19:30:10 UTC (rev 216795) @@ -0,0 +1,184 @@ +From eeacbf0c675b61881fc00539cb365de084950ceb Mon Sep 17 00:00:00 2001 +From: Sebastian Andrzej Siewior <[email protected]> +Date: Sun, 25 Sep 2016 23:45:12 +0200 +Subject: [PATCH] Add openssl 1.1.0 support + +while keeping work under openssl 1.0.2. + +Signed-off-by: Sebastian Andrzej Siewior <[email protected]> +Signed-off-by: Corey Minyard <[email protected]> +--- + lanserv/lanserv_ipmi.c | 34 +++++++++++++++++++++------------- + lib/aes_cbc.c | 34 +++++++++++++++++++++------------- + 2 files changed, 42 insertions(+), 26 deletions(-) + +diff --git a/lanserv/lanserv_ipmi.c b/lanserv/lanserv_ipmi.c +index b0a2431..67bf74a 100644 +--- a/lanserv/lanserv_ipmi.c ++++ b/lanserv/lanserv_ipmi.c +@@ -2217,7 +2217,7 @@ aes_cbc_encrypt(lanserv_data_t *lan, session_t *session, + unsigned char *d; + unsigned char *iv; + unsigned int i; +- EVP_CIPHER_CTX ctx; ++ EVP_CIPHER_CTX *ctx; + int rv; + int outlen; + int tmplen; +@@ -2264,14 +2264,18 @@ aes_cbc_encrypt(lanserv_data_t *lan, session_t *session, + *data_size += 16; + + /* Ok, we're set to do the crypt operation. */ +- EVP_CIPHER_CTX_init(&ctx); +- EVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, a->ckey, iv); +- EVP_CIPHER_CTX_set_padding(&ctx, 0); +- if (!EVP_EncryptUpdate(&ctx, *pos, &outlen, d, l)) { ++ ctx = EVP_CIPHER_CTX_new(); ++ if (!ctx) { ++ rv = ENOMEM; ++ goto out_cleanup; ++ } ++ EVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, a->ckey, iv); ++ EVP_CIPHER_CTX_set_padding(ctx, 0); ++ if (!EVP_EncryptUpdate(ctx, *pos, &outlen, d, l)) { + rv = ENOMEM; + goto out_cleanup; + } +- if (!EVP_EncryptFinal_ex(&ctx, (*pos) + outlen, &tmplen)) { ++ if (!EVP_EncryptFinal_ex(ctx, (*pos) + outlen, &tmplen)) { + rv = ENOMEM; /* right? */ + goto out_cleanup; + } +@@ -2281,7 +2285,7 @@ aes_cbc_encrypt(lanserv_data_t *lan, session_t *session, + *data_len = outlen + 16; + + out_cleanup: +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + free(d); + return rv; + } +@@ -2292,7 +2296,7 @@ aes_cbc_decrypt(lanserv_data_t *lan, session_t *session, msg_t *msg) + auth_data_t *a = &session->auth_data; + unsigned int l = msg->len; + unsigned char *d; +- EVP_CIPHER_CTX ctx; ++ EVP_CIPHER_CTX *ctx; + int outlen; + unsigned char *pad; + int padlen; +@@ -2312,10 +2316,14 @@ aes_cbc_decrypt(lanserv_data_t *lan, session_t *session, msg_t *msg) + memcpy(d, msg->data+16, l); + + /* Ok, we're set to do the decrypt operation. */ +- EVP_CIPHER_CTX_init(&ctx); +- EVP_DecryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, a->k2, msg->data); +- EVP_CIPHER_CTX_set_padding(&ctx, 0); +- if (!EVP_DecryptUpdate(&ctx, msg->data+16, &outlen, d, l)) { ++ ctx = EVP_CIPHER_CTX_new(); ++ if (!ctx) { ++ rv = ENOMEM; ++ goto out_cleanup; ++ } ++ EVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, a->k2, msg->data); ++ EVP_CIPHER_CTX_set_padding(ctx, 0); ++ if (!EVP_DecryptUpdate(ctx, msg->data+16, &outlen, d, l)) { + rv = EINVAL; + goto out_cleanup; + } +@@ -2348,7 +2356,7 @@ aes_cbc_decrypt(lanserv_data_t *lan, session_t *session, msg_t *msg) + msg->len = outlen; + + out_cleanup: +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + free(d); + return rv; + } +diff --git a/lib/aes_cbc.c b/lib/aes_cbc.c +index 483cdfb..f20d69b 100644 +--- a/lib/aes_cbc.c ++++ b/lib/aes_cbc.c +@@ -86,7 +86,7 @@ aes_cbc_encrypt(ipmi_con_t *ipmi, + unsigned int l = *payload_len; + unsigned int i; + unsigned char *d; +- EVP_CIPHER_CTX ctx; ++ EVP_CIPHER_CTX *ctx; + int rv; + int outlen; + int tmplen; +@@ -133,15 +133,19 @@ aes_cbc_encrypt(ipmi_con_t *ipmi, + *header_len -= 16; + *max_payload_len += 16; + ++ ctx = EVP_CIPHER_CTX_new(); ++ if (!ctx) { ++ rv = ENOMEM; ++ goto out_cleanup; ++ } + /* Ok, we're set to do the crypt operation. */ +- EVP_CIPHER_CTX_init(&ctx); +- EVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, info->k2, iv); +- EVP_CIPHER_CTX_set_padding(&ctx, 0); +- if (!EVP_EncryptUpdate(&ctx, *payload, &outlen, d, l)) { ++ EVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, info->k2, iv); ++ EVP_CIPHER_CTX_set_padding(ctx, 0); ++ if (!EVP_EncryptUpdate(ctx, *payload, &outlen, d, l)) { + rv = ENOMEM; /* right? */ + goto out_cleanup; + } +- if (!EVP_EncryptFinal_ex(&ctx, (*payload) + outlen, &tmplen)) { ++ if (!EVP_EncryptFinal_ex(ctx, (*payload) + outlen, &tmplen)) { + rv = ENOMEM; /* right? */ + goto out_cleanup; + } +@@ -154,7 +158,7 @@ aes_cbc_encrypt(ipmi_con_t *ipmi, + *payload_len = outlen + 16; + + out_cleanup: +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + ipmi_mem_free(d); + + return rv; +@@ -170,7 +174,7 @@ aes_cbc_decrypt(ipmi_con_t *ipmi, + unsigned int l = *payload_len; + unsigned char *d; + unsigned char *p; +- EVP_CIPHER_CTX ctx; ++ EVP_CIPHER_CTX *ctx; + int outlen; + int rv = 0; + unsigned char *pad; +@@ -195,10 +199,14 @@ aes_cbc_decrypt(ipmi_con_t *ipmi, + memcpy(d, p, l); + + /* Ok, we're set to do the decrypt operation. */ +- EVP_CIPHER_CTX_init(&ctx); +- EVP_DecryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, info->k2, *payload); +- EVP_CIPHER_CTX_set_padding(&ctx, 0); +- if (!EVP_DecryptUpdate(&ctx, p, &outlen, d, l)) { ++ ctx = EVP_CIPHER_CTX_new(); ++ if (!ctx) { ++ rv = ENOMEM; ++ goto out_cleanup; ++ } ++ EVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, info->k2, *payload); ++ EVP_CIPHER_CTX_set_padding(ctx, 0); ++ if (!EVP_DecryptUpdate(ctx, p, &outlen, d, l)) { + rv = EINVAL; + goto out_cleanup; + } +@@ -231,7 +239,7 @@ aes_cbc_decrypt(ipmi_con_t *ipmi, + *payload_len = outlen; + + out_cleanup: +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + ipmi_mem_free(d); + return rv; + } +-- +2.12.0 + Modified: PKGBUILD =================================================================== --- PKGBUILD 2017-03-16 19:17:26 UTC (rev 216794) +++ PKGBUILD 2017-03-16 19:30:10 UTC (rev 216795) @@ -7,7 +7,7 @@ pkgname=openipmi _pkgname=OpenIPMI pkgver=2.0.22 -pkgrel=1 +pkgrel=2 pkgdesc='Full-function IPMI (Intelligent Platform Management Interface) system' url='http://openipmi.sourceforge.net/' arch=('i686' 'x86_64') @@ -14,13 +14,16 @@ license=('LGPL2.1') makedepends=('swig') depends=('popt' 'ncurses' 'net-snmp' 'glib2' 'gdbm') -source=("http://downloads.sourceforge.net/project/${pkgname}/${_pkgname}%202.0%20Library/${_pkgname}-${pkgver}.tar.gz") -sha256sums=('4988900043c35fcfa9b2bf275d6593904f6429221befb770ba6ecb5502108e55') +source=("http://downloads.sourceforge.net/project/${pkgname}/${_pkgname}%202.0%20Library/${_pkgname}-${pkgver}.tar.gz" "0001-Add-openssl-1.1.0-support.patch") +sha256sums=('4988900043c35fcfa9b2bf275d6593904f6429221befb770ba6ecb5502108e55' + 'ec0364fd24d5ffb5349ed01d67910c5f15301b028e008977330786f9cf388ec2') options=('!libtool') prepare() { cd "${srcdir}/${_pkgname}-${pkgver}" + patch -Np1 -i $srcdir/0001-Add-openssl-1.1.0-support.patch + sed \ -e '/Requires:/s/pthread//' \ -e '/Libs:/s/$/ -lpthread/' \
