From 5bdcd362d24cbbcf18c5eb9df655fe9f7bcf5850 Mon Sep 17 00:00:00 2001 From: Matt Caswell Date: Wed, 23 Nov 2016 23:03:13 +0000 Subject: [PATCH] Ensure we are in accept state in DTLSv1_listen Calling SSL_set_accept_state() after DTLSv1_listen() clears the state, so SSL_accept() no longer works. In 1.0.2 calling DTLSv1_listen() would set the accept state automatically. We should still do that. Fixes #1989 Reviewed-by: Andy Polyakov --- ssl/d1_lib.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ssl/d1_lib.c b/ssl/d1_lib.c index 20970c3f02..c1d160ecd4 100644 --- a/ssl/d1_lib.c +++ b/ssl/d1_lib.c @@ -432,6 +432,11 @@ int DTLSv1_listen(SSL *s, BIO_ADDR *client) BIO_ADDR *tmpclient = NULL; PACKET pkt, msgpkt, msgpayload, session, cookiepkt; + if (s->handshake_func == NULL) { + /* Not properly initialized yet */ + SSL_set_accept_state(s); + } + /* Ensure there is no state left over from a previous invocation */ if (!SSL_clear(s)) return -1; -- 2.34.1