From: Rainer Jung Date: Fri, 12 Feb 2016 10:03:48 +0000 (+0000) Subject: Support for OpenSSL 1.1.0: X-Git-Tag: 2.5.0-alpha~2100 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9d0cc0b345485f93863012137836bf324d43c8d4;p=thirdparty%2Fapache%2Fhttpd.git Support for OpenSSL 1.1.0: - fix rejecting client initiated renegotiations git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1729968 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/ssl/ssl_engine_kernel.c b/modules/ssl/ssl_engine_kernel.c index 39388183b86..a7065cd5319 100644 --- a/modules/ssl/ssl_engine_kernel.c +++ b/modules/ssl/ssl_engine_kernel.c @@ -2132,17 +2132,19 @@ void ssl_callback_Info(const SSL *ssl, int where, int rc) /* If the reneg state is to reject renegotiations, check the SSL * state machine and move to ABORT if a Client Hello is being * read. */ - if ((where & SSL_CB_ACCEPT_LOOP) && scr->reneg_state == RENEG_REJECT) { - /* XXX: OpenSSL 1.1.0: Which state machine states to use instead of - * SSL3_ST_SR_CLNT_HELLO_A and SSL23_ST_SR_CLNT_HELLO_A ? */ #if OPENSSL_VERSION_NUMBER < 0x10100000L + if ((where & SSL_CB_ACCEPT_LOOP) && scr->reneg_state == RENEG_REJECT) { int state = SSL_get_state((SSL *)ssl); if (state == SSL3_ST_SR_CLNT_HELLO_A || state == SSL23_ST_SR_CLNT_HELLO_A) { +#else + if ((where & SSL_CB_HANDSHAKE_START) && scr->reneg_state == RENEG_REJECT) { +#endif scr->reneg_state = RENEG_ABORT; ap_log_cerror(APLOG_MARK, APLOG_ERR, 0, c, APLOGNO(02042) "rejecting client initiated renegotiation"); +#if OPENSSL_VERSION_NUMBER < 0x10100000L } #endif }