commit:     58f23370c5f39898121cd8bbb05638cd288eba37
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Sun Feb 24 09:33:30 2019 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Sun Feb 24 10:52:58 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=58f23370

net-misc/tn5250: Fix openssl-1.1 compat

Closes: https://bugs.gentoo.org/676654
Package-Manager: Portage-2.3.62, Repoman-2.3.12
Signed-off-by: Pacho Ramos <pacho <AT> gentoo.org>

 .../files/tn5250-0.17.4-duplicate-definition.patch | 115 ++++++++++++++
 net-misc/tn5250/files/tn5250-0.17.4-fedora.patch   | 167 +++++++++++++++++++++
 .../tn5250/files/tn5250-0.17.4-openssl11.patch     |  49 ++++++
 net-misc/tn5250/tn5250-0.17.4-r3.ebuild            |  58 +++++++
 4 files changed, 389 insertions(+)

diff --git a/net-misc/tn5250/files/tn5250-0.17.4-duplicate-definition.patch 
b/net-misc/tn5250/files/tn5250-0.17.4-duplicate-definition.patch
new file mode 100644
index 00000000000..39b3ccb4555
--- /dev/null
+++ b/net-misc/tn5250/files/tn5250-0.17.4-duplicate-definition.patch
@@ -0,0 +1,115 @@
+From 66e1a2f80091e9ee9b99156ae23e5faaf9f24fe0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <[email protected]>
+Date: Mon, 20 Feb 2017 15:06:36 +0100
+Subject: [PATCH 3/4] remove duplicate definition for tn3270_ssl_stream_init()
+
+---
+ lib5250/sslstream.c | 93 -----------------------------------------------------
+ 1 file changed, 93 deletions(-)
+
+diff --git a/lib5250/sslstream.c b/lib5250/sslstream.c
+index f4353a9..86d38cf 100644
+--- a/lib5250/sslstream.c
++++ b/lib5250/sslstream.c
+@@ -477,99 +477,6 @@ int tn5250_ssl_stream_init (Tn5250Stream *This)
+    return 0; /* Ok */
+ }
+ 
+-/****f* lib5250/tn3270_ssl_stream_init
+- * NAME
+- *    tn3270_ssl_stream_init
+- * SYNOPSIS
+- *    ret = tn3270_ssl_stream_init (This);
+- * INPUTS
+- *    Tn5250Stream *       This       - 
+- * DESCRIPTION
+- *    DOCUMENT ME!!!
+- *****/
+-int tn3270_ssl_stream_init (Tn5250Stream *This)
+-{
+-   int len;
+-
+-/* initialize SSL library */
+-
+-   SSL_load_error_strings();
+-   SSL_library_init();
+-
+-/* create a new SSL context */
+-
+-   This->ssl_context = SSL_CTX_new(SSLv23_client_method());
+-   if (This->ssl_context==NULL) {
+-        DUMP_ERR_STACK ();
+-        return -1;
+-   }
+-
+-/* if a certificate authority file is defined, load it into this context */
+-
+-   if (This->config!=NULL && tn5250_config_get (This->config, "ssl_ca_file")) 
{
+-        if (SSL_CTX_load_verify_locations(This->ssl_context, 
+-                  tn5250_config_get (This->config, "ssl_ca_file"), NULL)<1) {
+-            DUMP_ERR_STACK ();
+-            return -1;
+-        }
+-   }
+-
+-/* if a certificate authority file is defined, load it into this context */
+-
+-   if (This->config!=NULL && tn5250_config_get (This->config, "ssl_ca_file")) 
{
+-        if (SSL_CTX_load_verify_locations(This->ssl_context, 
+-                  tn5250_config_get (This->config, "ssl_ca_file"), NULL)<1) {
+-            DUMP_ERR_STACK ();
+-            return -1;
+-        }
+-   }
+-
+-   This->userdata = NULL;
+-
+-/* if a PEM passphrase is defined, set things up so that it can be used */
+-
+-   if (This->config!=NULL && tn5250_config_get (This->config,"ssl_pem_pass")){
+-        TN5250_LOG(("SSL: Setting password callback\n"));
+-        len = strlen(tn5250_config_get (This->config, "ssl_pem_pass"));
+-        This->userdata = malloc(len+1);
+-        strncpy(This->userdata,
+-                tn5250_config_get (This->config, "ssl_pem_pass"), len);
+-        SSL_CTX_set_default_passwd_cb(This->ssl_context,
+-                (pem_password_cb *)ssl_stream_passwd_cb);
+-        SSL_CTX_set_default_passwd_cb_userdata(This->ssl_context, (void 
*)This);
+-
+-   }
+-
+-/* If a certificate file has been defined, load it into this context as well 
*/
+-
+-   if (This->config!=NULL && tn5250_config_get (This->config, 
"ssl_cert_file")){
+-        TN5250_LOG(("SSL: Loading certificates from certificate file\n"));
+-        if (SSL_CTX_use_certificate_file(This->ssl_context,
+-                tn5250_config_get (This->config, "ssl_cert_file"),
+-                SSL_FILETYPE_PEM) <= 0) {
+-            DUMP_ERR_STACK ();
+-            return -1;
+-        }
+-        TN5250_LOG(("SSL: Loading private keys from certificate file\n"));
+-        if (SSL_CTX_use_PrivateKey_file(This->ssl_context,
+-                tn5250_config_get (This->config, "ssl_cert_file"),
+-                SSL_FILETYPE_PEM) <= 0) {
+-            DUMP_ERR_STACK ();
+-            return -1;
+-        }
+-   }
+-
+-   This->ssl_handle = NULL;
+-   This->connect = ssl_stream_connect;
+-   This->accept = ssl_stream_accept;
+-   This->disconnect = ssl_stream_disconnect;
+-   This->handle_receive = ssl_stream_handle_receive;
+-   This->send_packet = tn3270_ssl_stream_send_packet;
+-   This->destroy = ssl_stream_destroy;
+-   This->streamtype = TN3270E_STREAM;
+-   return 0; /* Ok */
+-}
+-
+ /****i* lib5250/ssl_stream_connect
+  * NAME
+  *    ssl_stream_connect
+-- 
+2.7.4

diff --git a/net-misc/tn5250/files/tn5250-0.17.4-fedora.patch 
b/net-misc/tn5250/files/tn5250-0.17.4-fedora.patch
new file mode 100644
index 00000000000..9c77bf08cc0
--- /dev/null
+++ b/net-misc/tn5250/files/tn5250-0.17.4-fedora.patch
@@ -0,0 +1,167 @@
+From 66e1a2f80091e9ee9b99156ae23e5faaf9f24fe0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <[email protected]>
+Date: Mon, 20 Feb 2017 15:06:36 +0100
+Subject: [PATCH 3/4] remove duplicate definition for tn3270_ssl_stream_init()
+
+---
+ lib5250/sslstream.c | 93 -----------------------------------------------------
+ 1 file changed, 93 deletions(-)
+
+diff --git a/lib5250/sslstream.c b/lib5250/sslstream.c
+index f4353a9..86d38cf 100644
+--- a/lib5250/sslstream.c
++++ b/lib5250/sslstream.c
+@@ -477,99 +477,6 @@ int tn5250_ssl_stream_init (Tn5250Stream *This)
+    return 0; /* Ok */
+ }
+ 
+-/****f* lib5250/tn3270_ssl_stream_init
+- * NAME
+- *    tn3270_ssl_stream_init
+- * SYNOPSIS
+- *    ret = tn3270_ssl_stream_init (This);
+- * INPUTS
+- *    Tn5250Stream *       This       - 
+- * DESCRIPTION
+- *    DOCUMENT ME!!!
+- *****/
+-int tn3270_ssl_stream_init (Tn5250Stream *This)
+-{
+-   int len;
+-
+-/* initialize SSL library */
+-
+-   SSL_load_error_strings();
+-   SSL_library_init();
+-
+-/* create a new SSL context */
+-
+-   This->ssl_context = SSL_CTX_new(SSLv23_client_method());
+-   if (This->ssl_context==NULL) {
+-        DUMP_ERR_STACK ();
+-        return -1;
+-   }
+-
+-/* if a certificate authority file is defined, load it into this context */
+-
+-   if (This->config!=NULL && tn5250_config_get (This->config, "ssl_ca_file")) 
{
+-        if (SSL_CTX_load_verify_locations(This->ssl_context, 
+-                  tn5250_config_get (This->config, "ssl_ca_file"), NULL)<1) {
+-            DUMP_ERR_STACK ();
+-            return -1;
+-        }
+-   }
+-
+-/* if a certificate authority file is defined, load it into this context */
+-
+-   if (This->config!=NULL && tn5250_config_get (This->config, "ssl_ca_file")) 
{
+-        if (SSL_CTX_load_verify_locations(This->ssl_context, 
+-                  tn5250_config_get (This->config, "ssl_ca_file"), NULL)<1) {
+-            DUMP_ERR_STACK ();
+-            return -1;
+-        }
+-   }
+-
+-   This->userdata = NULL;
+-
+-/* if a PEM passphrase is defined, set things up so that it can be used */
+-
+-   if (This->config!=NULL && tn5250_config_get (This->config,"ssl_pem_pass")){
+-        TN5250_LOG(("SSL: Setting password callback\n"));
+-        len = strlen(tn5250_config_get (This->config, "ssl_pem_pass"));
+-        This->userdata = malloc(len+1);
+-        strncpy(This->userdata,
+-                tn5250_config_get (This->config, "ssl_pem_pass"), len);
+-        SSL_CTX_set_default_passwd_cb(This->ssl_context,
+-                (pem_password_cb *)ssl_stream_passwd_cb);
+-        SSL_CTX_set_default_passwd_cb_userdata(This->ssl_context, (void 
*)This);
+-
+-   }
+-
+-/* If a certificate file has been defined, load it into this context as well 
*/
+-
+-   if (This->config!=NULL && tn5250_config_get (This->config, 
"ssl_cert_file")){
+-        TN5250_LOG(("SSL: Loading certificates from certificate file\n"));
+-        if (SSL_CTX_use_certificate_file(This->ssl_context,
+-                tn5250_config_get (This->config, "ssl_cert_file"),
+-                SSL_FILETYPE_PEM) <= 0) {
+-            DUMP_ERR_STACK ();
+-            return -1;
+-        }
+-        TN5250_LOG(("SSL: Loading private keys from certificate file\n"));
+-        if (SSL_CTX_use_PrivateKey_file(This->ssl_context,
+-                tn5250_config_get (This->config, "ssl_cert_file"),
+-                SSL_FILETYPE_PEM) <= 0) {
+-            DUMP_ERR_STACK ();
+-            return -1;
+-        }
+-   }
+-
+-   This->ssl_handle = NULL;
+-   This->connect = ssl_stream_connect;
+-   This->accept = ssl_stream_accept;
+-   This->disconnect = ssl_stream_disconnect;
+-   This->handle_receive = ssl_stream_handle_receive;
+-   This->send_packet = tn3270_ssl_stream_send_packet;
+-   This->destroy = ssl_stream_destroy;
+-   This->streamtype = TN3270E_STREAM;
+-   return 0; /* Ok */
+-}
+-
+ /****i* lib5250/ssl_stream_connect
+  * NAME
+  *    ssl_stream_connect
+-- 
+2.7.4
+
+
+From 5922e57bb5ea78ff35f82a60f1721d533cc0584a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <[email protected]>
+Date: Mon, 20 Feb 2017 15:37:51 +0100
+Subject: [PATCH 4/4] port to OpenSSL 1.1
+
+- check for better functions in configure
+- update SSL initialization call
+---
+ configure.ac        | 8 ++++----
+ lib5250/sslstream.c | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 4ba0007..8a16cff 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -152,13 +152,13 @@ dnl ** happily, we don't have to hunt for them thanks to 
ldconfig!
+ dnl **
+ if test -n $sslincludedir; then
+      CPPFLAGS="$CPPFLAGS $sslincludedir"
+-     AC_CHECK_LIB(crypto,CRYPTO_num_locks)
+-     if test "$ac_cv_lib_crypto_CRYPTO_num_locks" != "yes"
++     AC_CHECK_LIB(crypto,OPENSSL_init)
++     if test "$ac_cv_lib_crypto_OPENSSL_init" != "yes"
+      then
+              AC_MSG_ERROR([** Unable to find OpenSSL libraries!])
+      fi
+-     AC_CHECK_LIB(ssl,SSL_library_init)
+-     if test "$ac_cv_lib_ssl_SSL_library_init" != "yes"
++     AC_CHECK_LIB(ssl,OPENSSL_init_ssl)
++     if test "$ac_cv_lib_ssl_OPENSSL_init_ssl" != "yes"
+      then
+              AC_MSG_ERROR([** Unable to find OpenSSL libraries!])
+      fi
+diff --git a/lib5250/sslstream.c b/lib5250/sslstream.c
+index 86d38cf..3c0f390 100644
+--- a/lib5250/sslstream.c
++++ b/lib5250/sslstream.c
+@@ -368,7 +368,7 @@ int tn5250_ssl_stream_init (Tn5250Stream *This)
+ /*  initialize SSL library */
+ 
+    SSL_load_error_strings();
+-   SSL_library_init();
++   OPENSSL_init_ssl(0, NULL);
+ 
+ /*  which SSL method do we use? */
+ 
+-- 
+2.7.4
+

diff --git a/net-misc/tn5250/files/tn5250-0.17.4-openssl11.patch 
b/net-misc/tn5250/files/tn5250-0.17.4-openssl11.patch
new file mode 100644
index 00000000000..8c6d0fde1c7
--- /dev/null
+++ b/net-misc/tn5250/files/tn5250-0.17.4-openssl11.patch
@@ -0,0 +1,49 @@
+From 5922e57bb5ea78ff35f82a60f1721d533cc0584a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <[email protected]>
+Date: Mon, 20 Feb 2017 15:37:51 +0100
+Subject: [PATCH 4/4] port to OpenSSL 1.1
+
+- check for better functions in configure
+- update SSL initialization call
+---
+ configure.ac        | 8 ++++----
+ lib5250/sslstream.c | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 4ba0007..8a16cff 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -152,13 +152,13 @@ dnl ** happily, we don't have to hunt for them thanks to 
ldconfig!
+ dnl **
+ if test -n $sslincludedir; then
+      CPPFLAGS="$CPPFLAGS $sslincludedir"
+-     AC_CHECK_LIB(crypto,CRYPTO_num_locks)
+-     if test "$ac_cv_lib_crypto_CRYPTO_num_locks" != "yes"
++     AC_CHECK_LIB(crypto,OPENSSL_init)
++     if test "$ac_cv_lib_crypto_OPENSSL_init" != "yes"
+      then
+              AC_MSG_ERROR([** Unable to find OpenSSL libraries!])
+      fi
+-     AC_CHECK_LIB(ssl,SSL_library_init)
+-     if test "$ac_cv_lib_ssl_SSL_library_init" != "yes"
++     AC_CHECK_LIB(ssl,OPENSSL_init_ssl)
++     if test "$ac_cv_lib_ssl_OPENSSL_init_ssl" != "yes"
+      then
+              AC_MSG_ERROR([** Unable to find OpenSSL libraries!])
+      fi
+diff --git a/lib5250/sslstream.c b/lib5250/sslstream.c
+index 86d38cf..3c0f390 100644
+--- a/lib5250/sslstream.c
++++ b/lib5250/sslstream.c
+@@ -368,7 +368,7 @@ int tn5250_ssl_stream_init (Tn5250Stream *This)
+ /*  initialize SSL library */
+ 
+    SSL_load_error_strings();
+-   SSL_library_init();
++   OPENSSL_init_ssl(0, NULL);
+ 
+ /*  which SSL method do we use? */
+ 
+-- 
+2.7.4

diff --git a/net-misc/tn5250/tn5250-0.17.4-r3.ebuild 
b/net-misc/tn5250/tn5250-0.17.4-r3.ebuild
new file mode 100644
index 00000000000..b28b5cc3723
--- /dev/null
+++ b/net-misc/tn5250/tn5250-0.17.4-r3.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit autotools
+
+DESCRIPTION="IBM AS/400 telnet client which emulates 5250 terminals/printers"
+HOMEPAGE="http://tn5250.sourceforge.net/";
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+IUSE="libressl ssl"
+
+RDEPEND="
+       sys-libs/ncurses:0=
+       ssl? (
+               !libressl? ( dev-libs/openssl:0= )
+               libressl? ( dev-libs/libressl:0= )
+       )
+"
+
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-0.17.4-disable-sslv2-and-sslv3.patch
+       "${FILESDIR}"/${PN}-0.17.4-fix-Wformat-security-warnings.patch
+       "${FILESDIR}"/${PN}-0.17.4-tinfo.patch
+       "${FILESDIR}"/${PN}-0.17.4-whoami.patch
+       "${FILESDIR}"/${PN}-0.17.4-duplicate-definition.patch
+)
+
+src_prepare() {
+       default
+       if has_version ">=dev-libs/openssl-1.1.1"; then
+               eapply "${FILESDIR}"/${PN}-0.17.4-openssl11.patch
+       fi
+       eautoreconf
+}
+
+src_configure() {
+       econf \
+               $(use_with ssl) \
+               --disable-static \
+               --without-python
+}
+
+src_install() {
+       # The TERMINFO variable needs to be defined for the install
+       # to work, because the install calls "tic."      man tic for
+       # details.
+       dodir /usr/share/terminfo
+       emake DESTDIR="${D}" TERMINFO="${D}/usr/share/terminfo" install
+
+       einstalldocs
+       find "${D}" -name '*.la' -delete || die
+}

Reply via email to