]> granicus.if.org Git - apache/commitdiff
Support for OpenSSL 1.1.0:
authorRainer Jung <rjung@apache.org>
Fri, 12 Feb 2016 10:03:48 +0000 (10:03 +0000)
committerRainer Jung <rjung@apache.org>
Fri, 12 Feb 2016 10:03:48 +0000 (10:03 +0000)
- fix rejecting client initiated renegotiations

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1729968 13f79535-47bb-0310-9956-ffa450edef68

modules/ssl/ssl_engine_kernel.c

index 39388183b8652ebfef6bba09799ce65560ed4434..a7065cd5319dac2271e920983098b22f579a64e0 100644 (file)
@@ -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
     }