On 2018/10/23 03:13, Joel Sing wrote:
> x11/freerdp currently reaches deep into libssl internals, in order to send
> TLS alerts. AFAIK OpenSSL 1.1 does not provide any way for TLS alerts to be
> triggered outside the library and freerdp's approach is to simply disable
> this code. Do the same thing for current LibreSSL, so that we can make
> these internals internal.
>
> ok?
OK. Alternatively I would also be happy to just remove the
"|| defined(LIBRESSL_VERSION_NUMBER)".
In that code block it says "Manually sending a TLS alert is necessary in
certain cases, like when server-side NLA results in an authentication
failure" - I don't think we have anything using the server-side functionality
of freerdp's library so this is unlikely to affect us.
There's a newer version upstream (ports update blocked as they now want
timer_create()) - but they haven't changed this area.
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/x11/freerdp/Makefile,v
> retrieving revision 1.33
> diff -u -p -u -p -r1.33 Makefile
> --- Makefile 14 Aug 2018 08:36:49 -0000 1.33
> +++ Makefile 22 Oct 2018 16:08:45 -0000
> @@ -6,7 +6,7 @@ BROKEN-hppa = undefined reference to __
> COMMENT = open source client for Windows Terminal Server
> DISTNAME = freerdp-2.0.0-rc1
> PKGNAME = freerdp-2.0.0rc1
> -REVISION = 0
> +REVISION = 1
> CATEGORIES = x11 net
>
> SHARED_LIBS += freerdp-client2 0.0 # 2.0
> Index: patches/patch-libfreerdp_crypto_tls_c
> ===================================================================
> RCS file: patches/patch-libfreerdp_crypto_tls_c
> diff -N patches/patch-libfreerdp_crypto_tls_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-libfreerdp_crypto_tls_c 22 Oct 2018 16:08:45 -0000
> @@ -0,0 +1,17 @@
> +$OpenBSD$
> +
> +Stop reaching into libssl internals to send TLS alerts.
> +
> +Index: libfreerdp/crypto/tls.c
> +--- libfreerdp/crypto/tls.c.orig
> ++++ libfreerdp/crypto/tls.c
> +@@ -1020,7 +1020,8 @@ BOOL tls_send_alert(rdpTls* tls)
> + * FIXME: The following code does not work on OpenSSL > 1.1.0 because
> the
> + * SSL struct is opaqe now
> + */
> +-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
> ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || \
> ++ (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER <
> 0x2080000fL)
> +
> + if (tls->alertDescription != TLS_ALERT_DESCRIPTION_CLOSE_NOTIFY)
> + {
>