]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
check SSL_do_handshake(3) return value
authorGiovanni Bechis <gbechis@apache.org>
Tue, 4 Apr 2023 16:46:05 +0000 (16:46 +0000)
committerGiovanni Bechis <gbechis@apache.org>
Tue, 4 Apr 2023 16:46:05 +0000 (16:46 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1908964 13f79535-47bb-0310-9956-ffa450edef68

docs/log-message-tags/next-number
modules/ssl/ssl_engine_kernel.c

index d69788b083fcd16ec721321ea07a8a34398dba23..2624afa36560bfd94cb678f6f9d4a3bf579856fc 100644 (file)
@@ -1 +1 @@
-10421
+10422
index f63865c37a3603e0becc9a16cd3625477a84826b..96aaf6602d0811421268b7a720952d1a6496a513 100644 (file)
@@ -78,9 +78,8 @@ static apr_status_t upgrade_connection(request_rec *r)
 
     /* Perform initial SSL handshake. */
     SSL_set_accept_state(ssl);
-    SSL_do_handshake(ssl);
 
-    if (!SSL_is_init_finished(ssl)) {
+    if ((SSL_do_handshake(ssl) != 1) || !SSL_is_init_finished(ssl)) {
         ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(02030)
                       "TLS upgrade handshake failed");
         ssl_log_ssl_error(SSLLOG_MARK, APLOG_ERR, r->server);
@@ -1182,7 +1181,12 @@ static int ssl_hook_Access_modern(request_rec *r, SSLSrvConfigRec *sc, SSLDirCon
             
             modssl_set_app_data2(ssl, r);
 
-            SSL_do_handshake(ssl);
+            if(SSL_do_handshake(ssl) != 1) {
+                ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(10421)
+                              "TLS handshake failure");
+                ssl_log_ssl_error(SSLLOG_MARK, APLOG_ERR, r->server);
+                return HTTP_FORBIDDEN;
+            }
             /* Need to trigger renegotiation handshake by reading.
              * Peeking 0 bytes actually works.
              * See: http://marc.info/?t=145493359200002&r=1&w=2