diff options
-rw-r--r-- | url.c | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -444,11 +444,17 @@ openSSLHandle(int sock, char *hostname, char **p_cert) goto eend; } } - if ((!ssl_ca_file || *ssl_ca_file == '\0') - && (!ssl_ca_path || *ssl_ca_path == '\0') - || !ssl_verify_server - || !SSL_CTX_load_verify_locations(ssl_ctx, ssl_ca_file, ssl_ca_path)) - SSL_CTX_set_default_verify_paths(ssl_ctx); + if (ssl_verify_server) { + char *file = NULL, *path = NULL; + if (ssl_ca_file && *ssl_ca_file != '\0') file = ssl_ca_file; + if (ssl_ca_path && *ssl_ca_path != '\0') path = ssl_ca_path; + if (!file && !path) + SSL_CTX_set_default_verify_paths(ssl_ctx); + else if (!SSL_CTX_load_verify_locations(ssl_ctx, file, path)) { + free_ssl_ctx(); + goto eend; + } + } #endif /* defined(USE_SSL_VERIFY) */ #endif /* SSLEAY_VERSION_NUMBER >= 0x0800 */ } |