]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: test-http-client - Only load existing CAs
authorAki Tuomi <aki.tuomi@dovecot.fi>
Wed, 28 Mar 2018 06:11:55 +0000 (09:11 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 25 Apr 2018 16:15:31 +0000 (16:15 +0000)
Otherwise the SSL tests do not properly work.

Fixes Error: HTTP Request failed: Couldn't initialize SSL context: Can't load CA certs from directory /etc/ssl/certs: error:02001002:system library:fopen:No such file or directory: fopen('/etc/pki/tls/cert.pem','r'), error:2006D080:BIO routines:BIO_new_file:no such file, error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib

src/lib-http/test-http-client.c

index d51f2a5a92c8aa3a95378fc22f66d8255f40c0fe..f575573366ea74b5cf6012e48b1d214d5e6adef1 100644 (file)
@@ -356,6 +356,7 @@ int main(int argc, char *argv[])
        struct http_client_context *http_cctx;
        struct http_client *http_client1, *http_client2, *http_client3, *http_client4;
        struct ssl_iostream_settings ssl_set;
+       struct stat st;
        const char *error;
 
        lib_init();
@@ -385,8 +386,10 @@ int main(int argc, char *argv[])
        }
        i_zero(&ssl_set);
        ssl_set.allow_invalid_cert = TRUE;
-       ssl_set.ca_dir = "/etc/ssl/certs"; /* debian */
-       ssl_set.ca_file = "/etc/pki/tls/cert.pem"; /* redhat */
+       if (stat("/etc/ssl/certs", &st) == 0 && S_ISDIR(st.st_mode))
+               ssl_set.ca_dir = "/etc/ssl/certs"; /* debian */
+       if (stat("/etc/ssl/certs", &st) == 0 && S_ISREG(st.st_mode))
+               ssl_set.ca_file = "/etc/pki/tls/cert.pem"; /* redhat */
 
        i_zero(&http_set);
        http_set.ssl = &ssl_set;