]> granicus.if.org Git - curl/commitdiff
Don't omit CN verification in DarwinSSL when an IP address is used.
authorDavid Ryskalczyk <d235j.1@gmail.com>
Sun, 23 Feb 2014 15:35:30 +0000 (10:35 -0500)
committerDavid Ryskalczyk <d235j.1@gmail.com>
Sun, 23 Feb 2014 17:37:27 +0000 (12:37 -0500)
lib/vtls/curl_darwinssl.c

index b3bc4da7a0c49cc20b5e37db5f14e855dedbf375..3a9da91ccf4b30d70b117380c91cb8712ebe7172 100644 (file)
@@ -1323,20 +1323,26 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
   }
 #endif /* CURL_BUILD_MAC_10_6 || CURL_BUILD_IOS */
 
-  /* If this is a domain name and not an IP address, then configure SNI.
+  /* Configure hostname check. SNI is used if available.
+   * Both hostname check and SNI require SSLSetPeerDomainName().
    * Also: the verifyhost setting influences SNI usage */
-  /* If this is a domain name and not an IP address, then configure SNI: */
-  if((0 == Curl_inet_pton(AF_INET, conn->host.name, &addr)) &&
-#ifdef ENABLE_IPV6
-     (0 == Curl_inet_pton(AF_INET6, conn->host.name, &addr)) &&
-#endif
-     data->set.ssl.verifyhost) {
+  if(data->set.ssl.verifyhost) {
     err = SSLSetPeerDomainName(connssl->ssl_ctx, conn->host.name,
-                               strlen(conn->host.name));
+    strlen(conn->host.name));
+
     if(err != noErr) {
       infof(data, "WARNING: SSL: SSLSetPeerDomainName() failed: OSStatus %d\n",
             err);
     }
+
+    if((Curl_inet_pton(AF_INET, conn->host.name, &addr))
+  #ifdef ENABLE_IPV6
+    || (Curl_inet_pton(AF_INET6, conn->host.name, &addr))
+  #endif
+       ) {
+         infof(data, "WARNING: using IP address, SNI is being disabled by "
+         "the OS.\n");
+    }
   }
 
   /* Disable cipher suites that ST supports but are not safe. These ciphers