From 3368f33b04e6c2368ecc2b5de7099783947a512e Mon Sep 17 00:00:00 2001 From: Bernard Cafarelli Date: Mon, 20 Aug 2018 18:09:35 +0200 Subject: [PATCH] net-misc/rdesktop: openssl 1.1 support and EAPI bump Simplify and clean ebuild Package-Manager: Portage-2.3.47, Repoman-2.3.10 --- .../rdesktop-1.6.0-sound_configure.patch | 4 +- .../files/rdesktop-1.8.3-no_strip.patch | 12 ++ .../files/rdesktop-1.8.3-openssl-1.1.patch | 125 ++++++++++++++++++ .../rdesktop-1.8.3-xrandr_configure.patch | 4 +- net-misc/rdesktop/rdesktop-1.8.3-r3.ebuild | 70 ++++++++++ 5 files changed, 211 insertions(+), 4 deletions(-) create mode 100644 net-misc/rdesktop/files/rdesktop-1.8.3-no_strip.patch create mode 100644 net-misc/rdesktop/files/rdesktop-1.8.3-openssl-1.1.patch create mode 100644 net-misc/rdesktop/rdesktop-1.8.3-r3.ebuild diff --git a/net-misc/rdesktop/files/rdesktop-1.6.0-sound_configure.patch b/net-misc/rdesktop/files/rdesktop-1.6.0-sound_configure.patch index 8e64ba8b48cb..b2f492b10716 100644 --- a/net-misc/rdesktop/files/rdesktop-1.6.0-sound_configure.patch +++ b/net-misc/rdesktop/files/rdesktop-1.6.0-sound_configure.patch @@ -1,5 +1,5 @@ ---- configure.ac.orig 2009-06-30 10:35:14.000000000 +0200 -+++ configure.ac 2009-06-30 11:35:10.000000000 +0200 +--- rdesktop.orig/configure.ac 2009-06-30 10:35:14.000000000 +0200 ++++ rdesktop/configure.ac 2009-06-30 11:35:10.000000000 +0200 @@ -228,7 +228,11 @@ if test -n "$PKG_CONFIG"; then PKG_CHECK_MODULES(LIBAO, ao, [HAVE_LIBAO=1], [HAVE_LIBAO=0]) diff --git a/net-misc/rdesktop/files/rdesktop-1.8.3-no_strip.patch b/net-misc/rdesktop/files/rdesktop-1.8.3-no_strip.patch new file mode 100644 index 000000000000..018ceeedacfa --- /dev/null +++ b/net-misc/rdesktop/files/rdesktop-1.8.3-no_strip.patch @@ -0,0 +1,12 @@ +diff -Naur rdesktop-1.8.3.orig/Makefile.in rdesktop-1.8.3/Makefile.in +--- rdesktop-1.8.3.orig/Makefile.in 2013-01-21 13:28:14.000000000 +0100 ++++ rdesktop-1.8.3/Makefile.in 2018-08-20 18:05:38.401218002 +0200 +@@ -60,7 +60,7 @@ + installbin: rdesktop + mkdir -p $(DESTDIR)$(bindir) + $(INSTALL) rdesktop $(DESTDIR)$(bindir) +- $(STRIP) $(DESTDIR)$(bindir)/rdesktop ++ + chmod 755 $(DESTDIR)$(bindir)/rdesktop + + .PHONY: installman diff --git a/net-misc/rdesktop/files/rdesktop-1.8.3-openssl-1.1.patch b/net-misc/rdesktop/files/rdesktop-1.8.3-openssl-1.1.patch new file mode 100644 index 000000000000..bea047cce9a9 --- /dev/null +++ b/net-misc/rdesktop/files/rdesktop-1.8.3-openssl-1.1.patch @@ -0,0 +1,125 @@ +From bd6aa6acddf0ba640a49834807872f4cc0d0a773 Mon Sep 17 00:00:00 2001 +From: Jani Hakala +Date: Thu, 16 Jun 2016 14:28:15 +0300 +Subject: [PATCH] Fix OpenSSL 1.1 compability issues + +Some data types have been made opaque in OpenSSL version 1.1 so +stack allocation and accessing struct fields directly does not work. +--- + ssl.c | 65 ++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 40 insertions(+), 25 deletions(-) + +diff --git a/ssl.c b/ssl.c +index 48751255..032e9b9e 100644 +--- a/ssl.c ++++ b/ssl.c +@@ -88,7 +88,7 @@ rdssl_rsa_encrypt(uint8 * out, uint8 * in, int len, uint32 modulus_size, uint8 * + uint8 * exponent) + { + BN_CTX *ctx; +- BIGNUM mod, exp, x, y; ++ BIGNUM *mod, *exp, *x, *y; + uint8 inr[SEC_MAX_MODULUS_SIZE]; + int outlen; + +@@ -98,24 +98,24 @@ rdssl_rsa_encrypt(uint8 * out, uint8 * in, int len, uint32 modulus_size, uint8 * + reverse(inr, len); + + ctx = BN_CTX_new(); +- BN_init(&mod); +- BN_init(&exp); +- BN_init(&x); +- BN_init(&y); +- +- BN_bin2bn(modulus, modulus_size, &mod); +- BN_bin2bn(exponent, SEC_EXPONENT_SIZE, &exp); +- BN_bin2bn(inr, len, &x); +- BN_mod_exp(&y, &x, &exp, &mod, ctx); +- outlen = BN_bn2bin(&y, out); ++ mod = BN_new(); ++ exp = BN_new(); ++ x = BN_new(); ++ y = BN_new(); ++ ++ BN_bin2bn(modulus, modulus_size, mod); ++ BN_bin2bn(exponent, SEC_EXPONENT_SIZE, exp); ++ BN_bin2bn(inr, len, x); ++ BN_mod_exp(y, x, exp, mod, ctx); ++ outlen = BN_bn2bin(y, out); + reverse(out, outlen); + if (outlen < (int) modulus_size) + memset(out + outlen, 0, modulus_size - outlen); + +- BN_free(&y); +- BN_clear_free(&x); +- BN_free(&exp); +- BN_free(&mod); ++ BN_free(y); ++ BN_clear_free(x); ++ BN_free(exp); ++ BN_free(mod); + BN_CTX_free(ctx); + } + +@@ -146,12 +146,20 @@ rdssl_cert_to_rkey(RDSSL_CERT * cert, uint32 * key_len) + + Kudos to Richard Levitte for the following (. intiutive .) + lines of code that resets the OID and let's us extract the key. */ +- nid = OBJ_obj2nid(cert->cert_info->key->algor->algorithm); ++ ++ X509_PUBKEY *key = NULL; ++ X509_ALGOR *algor = NULL; ++ ++ key = X509_get_X509_PUBKEY(cert); ++ algor = X509_PUBKEY_get0_param(NULL, NULL, 0, &algor, key); ++ ++ nid = OBJ_obj2nid(algor->algorithm); ++ + if ((nid == NID_md5WithRSAEncryption) || (nid == NID_shaWithRSAEncryption)) + { + DEBUG_RDP5(("Re-setting algorithm type to RSA in server certificate\n")); +- ASN1_OBJECT_free(cert->cert_info->key->algor->algorithm); +- cert->cert_info->key->algor->algorithm = OBJ_nid2obj(NID_rsaEncryption); ++ X509_PUBKEY_set0_param(key, OBJ_nid2obj(NID_rsaEncryption), ++ 0, NULL, NULL, 0); + } + epk = X509_get_pubkey(cert); + if (NULL == epk) +@@ -201,14 +209,24 @@ rdssl_rkey_get_exp_mod(RDSSL_RKEY * rkey, uint8 * exponent, uint32 max_exp_len, + { + int len; + +- if ((BN_num_bytes(rkey->e) > (int) max_exp_len) || +- (BN_num_bytes(rkey->n) > (int) max_mod_len)) ++ BIGNUM *e = NULL; ++ BIGNUM *n = NULL; ++ ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ e = rkey->e; ++ n = rkey->n; ++#else ++ RSA_get0_key(rkey, &e, &n, NULL); ++#endif ++ ++ if ((BN_num_bytes(e) > (int) max_exp_len) || ++ (BN_num_bytes(n) > (int) max_mod_len)) + { + return 1; + } +- len = BN_bn2bin(rkey->e, exponent); ++ len = BN_bn2bin(e, exponent); + reverse(exponent, len); +- len = BN_bn2bin(rkey->n, modulus); ++ len = BN_bn2bin(n, modulus); + reverse(modulus, len); + return 0; + } +@@ -229,8 +247,5 @@ void + rdssl_hmac_md5(const void *key, int key_len, const unsigned char *msg, int msg_len, + unsigned char *md) + { +- HMAC_CTX ctx; +- HMAC_CTX_init(&ctx); + HMAC(EVP_md5(), key, key_len, msg, msg_len, md, NULL); +- HMAC_CTX_cleanup(&ctx); + } diff --git a/net-misc/rdesktop/files/rdesktop-1.8.3-xrandr_configure.patch b/net-misc/rdesktop/files/rdesktop-1.8.3-xrandr_configure.patch index f57a86b4315b..fea0b975260f 100644 --- a/net-misc/rdesktop/files/rdesktop-1.8.3-xrandr_configure.patch +++ b/net-misc/rdesktop/files/rdesktop-1.8.3-xrandr_configure.patch @@ -1,5 +1,5 @@ ---- configure.ac.orig 2015-09-14 11:27:54.974472081 +0200 -+++ configure.ac 2015-09-14 11:34:37.729155044 +0200 +--- rdesktop.orig/configure.ac 2015-09-14 11:27:54.974472081 +0200 ++++ rdesktop/configure.ac 2015-09-14 11:34:37.729155044 +0200 @@ -151,9 +151,12 @@ AC_SUBST(CREDSSPOBJ) diff --git a/net-misc/rdesktop/rdesktop-1.8.3-r3.ebuild b/net-misc/rdesktop/rdesktop-1.8.3-r3.ebuild new file mode 100644 index 000000000000..d8c5ec13872b --- /dev/null +++ b/net-misc/rdesktop/rdesktop-1.8.3-r3.ebuild @@ -0,0 +1,70 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit autotools eutils + +MY_PV=${PV/_/-} + +DESCRIPTION="A Remote Desktop Protocol Client" +HOMEPAGE="http://rdesktop.sourceforge.net/" +SRC_URI="mirror://sourceforge/${PN}/${PN}-${MY_PV}.tar.gz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux ~sparc-solaris ~x64-solaris ~x86-solaris" +IUSE="alsa ao debug ipv6 kerberos libressl libsamplerate oss pcsc-lite xrandr" + +S=${WORKDIR}/${PN}-${MY_PV} + +RDEPEND=" + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:= ) + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXau + x11-libs/libXdmcp + alsa? ( media-libs/alsa-lib ) + ao? ( >=media-libs/libao-0.8.6 ) + kerberos? ( net-libs/libgssglue ) + libsamplerate? ( media-libs/libsamplerate ) + pcsc-lite? ( >=sys-apps/pcsc-lite-1.6.6 ) + xrandr? ( x11-libs/libXrandr )" +DEPEND="${RDEPEND} + x11-libs/libXt" +BDEPEND=virtual/pkgconfig + +PATCHES=( + "${FILESDIR}"/${PN}-1.6.0-sound_configure.patch + "${FILESDIR}"/${P}-no_strip.patch + "${FILESDIR}"/${P}-xrandr_configure.patch + "${FILESDIR}"/${P}-openssl-1.1.patch +) + +DOCS=( doc/HACKING doc/TODO doc/keymapping.txt ) + +src_prepare() { + default + eautoreconf +} + +src_configure() { + if use ao; then + sound_conf=$(use_with ao sound libao) + else if use alsa; then + sound_conf=$(use_with alsa sound alsa) + else + sound_conf=$(use_with oss sound oss) + fi + fi + + econf \ + --with-openssl="${EPREFIX}"/usr \ + $(use_with debug) \ + $(use_with ipv6) \ + $(use_with libsamplerate) \ + $(use_with xrandr) \ + $(use_enable kerberos credssp) \ + $(use_enable pcsc-lite smartcard) \ + ${sound_conf} +} -- 2.26.2