]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
TLS Stream: handle successful TLS handshake after listener shutdown
authorArtem Boldariev <artem@boldariev.com>
Tue, 18 Oct 2022 11:42:10 +0000 (14:42 +0300)
committerArtem Boldariev <artem@boldariev.com>
Tue, 18 Oct 2022 13:40:08 +0000 (16:40 +0300)
It was possible that accept callback can be called after listener
shutdown. In such a case the callback pointer equals NULL, leading to
segmentation fault. This commit fixes that.

lib/isc/netmgr/tlsstream.c

index 4746c6bb2f1173001bfe7d27bbbf749a9ba8ac4b..b09dd91838ce79bfc00b9efab2d4fbf438fa6186 100644 (file)
@@ -342,9 +342,13 @@ tls_try_handshake(isc_nmsocket_t *sock, isc_result_t *presult) {
                isc__nmsocket_log_tls_session_reuse(sock, sock->tlsstream.tls);
                tlshandle = isc__nmhandle_get(sock, &sock->peer, &sock->iface);
                if (sock->tlsstream.server) {
-                       result = sock->listener->accept_cb(
-                               tlshandle, result,
-                               sock->listener->accept_cbarg);
+                       if (isc__nmsocket_closing(sock->listener)) {
+                               result = ISC_R_CANCELED;
+                       } else {
+                               result = sock->listener->accept_cb(
+                                       tlshandle, result,
+                                       sock->listener->accept_cbarg);
+                       }
                } else {
                        tls_call_connect_cb(sock, tlshandle, result);
                }