]> 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:40:06 +0000 (09:40 -0700)
committerAmos Jeffries <squid3@treenet.co.nz>
Tue, 20 May 2014 16:40:06 +0000 (09:40 -0700)
src/FwdState.cc

index 6c65b3b368748945cfbd12325d15fe63e9c4112d..9d793fa2619e5b422dd8678e19ff61e393ad5816 100644 (file)
@@ -718,7 +718,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->flags.isIntercepted();
+            const bool isConnectRequest = request->clientConnectionManager.valid() &&
+                                          !request->clientConnectionManager->port->flags.isIntercepted();
             if (request->flags.sslPeek && !isConnectRequest) {
                 if (X509 *srvX509 = errDetails->peerCert()) {
                     if (const char *name = Ssl::CommonHostName(srvX509)) {
@@ -964,7 +965,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->flags.isIntercepted();
+        const bool isConnectRequest = request->clientConnectionManager.valid() &&
+                                      !request->clientConnectionManager->port->flags.isIntercepted();
         if (!request->flags.sslPeek || isConnectRequest)
             SSL_set_ex_data(ssl, ssl_ex_index_server, (void*)hostname);