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 +}
