From: Matt Caswell Date: Wed, 23 Nov 2016 23:03:13 +0000 (+0000) Subject: Ensure we are in accept state in DTLSv1_listen X-Git-Tag: OpenSSL_1_1_1-pre1~2959 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=5bdcd362d24cbbcf18c5eb9df655fe9f7bcf5850;p=oweals%2Fopenssl.git 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 --- 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;