]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Fix segfault setting up server SSL connnection
authorAmos Jeffries <squid3@treenet.co.nz>
Tue, 20 May 2014 16:43:22 +0000 (09:43 -0700)
committerAmos Jeffries <squid3@treenet.co.nz>
Tue, 20 May 2014 16:43:22 +0000 (09:43 -0700)
src/forward.cc

index d3e634ec1c281914c71443526b18468ccbff4bf7..a7df1d98430b11f114be19ddff5f25641b72d7f9 100644 (file)
@@ -726,7 +726,8 @@ FwdState::negotiateSSL(int fd)
             // For intercepted connections, set the host name to the server
             // certificate CN. Otherwise, we just hope that CONNECT is using
             // a user-entered address (a host name or a user-entered IP).
-            const bool isConnectRequest = !request->clientConnectionManager->port->spoof_client_ip &&
+            const bool isConnectRequest = request->clientConnectionManager.valid() &&
+                                          !request->clientConnectionManager->port->spoof_client_ip &&
                                           !request->clientConnectionManager->port->intercepted;
             if (request->flags.sslPeek && !isConnectRequest) {
                 if (X509 *srvX509 = errDetails->peerCert()) {
@@ -823,7 +824,8 @@ FwdState::initiateSSL()
         // unless it was the CONNECT request with a user-typed address.
         const char *hostname = request->GetHost();
         const bool hostnameIsIp = request->GetHostIsNumeric();
-        const bool isConnectRequest = !request->clientConnectionManager->port->spoof_client_ip &&
+        const bool isConnectRequest = request->clientConnectionManager.valid() &&
+                                      !request->clientConnectionManager->port->spoof_client_ip &&
                                       !request->clientConnectionManager->port->intercepted;
         if (!request->flags.sslPeek || isConnectRequest)
             SSL_set_ex_data(ssl, ssl_ex_index_server, (void*)hostname);