libressl / portable

LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code. Pull requests or patches sent to tech@openbsd.org are welcome.
https://www.libressl.org
1.35k stars 269 forks source link

[DTLS] `#ifndef OPENSSL_NO_DTLS1` does not make sense now #1097

Closed nak3 closed 1 week ago

nak3 commented 1 week ago

description

https://github.com/libressl/openbsd/blob/3d60073121c9fed2d9a86b0ec752999b75409e21/src/lib/libssl/ssl_lib.c#L1375

#ifndef OPENSSL_NO_DTLS1
        if (larg < (long)dtls1_min_mtu())
            return (0);
#endif

reproducer

    if (!SSL_set_mtu(ssl, -1)) {
        fprintf(stderr, "ERROR: failed to set mtu\n");
        goto cleanup;
    }

proposal patch

diff --git src/lib/libssl/ssl_lib.c src/lib/libssl/ssl_lib.c
index 1a2bf3695..33b6d1a42 100644
--- src/lib/libssl/ssl_lib.c
+++ src/lib/libssl/ssl_lib.c
@@ -1372,7 +1372,7 @@ SSL_ctrl(SSL *s, int cmd, long larg, void *parg)
                s->max_cert_list = larg;
                return (l);
        case SSL_CTRL_SET_MTU:
-#ifndef OPENSSL_NO_DTLS1
+#if !defined(OPENSSL_NO_DTLS1) && !defined(OPENSSL_NO_DTLS1_2)
                if (larg < (long)dtls1_min_mtu())
                        return (0);
 #endif
diff --git src/lib/libssl/ssl_lib.c src/lib/libssl/ssl_lib.c
index 1a2bf3695..431e1f13f 100644
--- src/lib/libssl/ssl_lib.c
+++ src/lib/libssl/ssl_lib.c
@@ -1372,7 +1372,7 @@ SSL_ctrl(SSL *s, int cmd, long larg, void *parg)
                s->max_cert_list = larg;
                return (l);
        case SSL_CTRL_SET_MTU:
-#ifndef OPENSSL_NO_DTLS1
+#ifndef OPENSSL_NO_DTLS1_2
                if (larg < (long)dtls1_min_mtu())
                        return (0);
 #endif
botovq commented 1 week ago

+#if !defined(OPENSSL_NO_DTLS1) && !defined(OPENSSL_NO_DTLS1_2)

Is there any benefit in keeping these guards?

nak3 commented 1 week ago

Ah, it seems that the guards are not necessary. Build was succeeded without the guards as dtls1_min_mtu() is not guarded.


diff --git src/lib/libssl/ssl_lib.c src/lib/libssl/ssl_lib.c
index 1a2bf3695..e889337e5 100644
--- src/lib/libssl/ssl_lib.c
+++ src/lib/libssl/ssl_lib.c
@@ -1372,10 +1372,8 @@ SSL_ctrl(SSL *s, int cmd, long larg, void *parg)
                s->max_cert_list = larg;
                return (l);
        case SSL_CTRL_SET_MTU:
-#ifndef OPENSSL_NO_DTLS1
                if (larg < (long)dtls1_min_mtu())
                        return (0);
-#endif
                if (SSL_is_dtls(s)) {
                        s->d1->mtu = larg;
                        return (larg);