Skip to content

Commit

Permalink
streams: report OpenSSL errors if global init fails
Browse files Browse the repository at this point in the history
In case when the global initialization of the OpenSSL stream fails, the
user is left without any hint as to what went wrong as we do not provide
any error message at all. This commit refactors the init function to
have a common error path, which now also sets an error message including
the error string provided by OpenSSL.
  • Loading branch information
pks-t committed Jul 6, 2018
1 parent 01574d4 commit 75395c8
Showing 1 changed file with 16 additions and 21 deletions.
37 changes: 16 additions & 21 deletions src/streams/openssl.c
Original file line number Diff line number Diff line change
Expand Up @@ -218,39 +218,34 @@ int git_openssl_stream_global_init(void)
* compatibility. We then disable SSL so we only allow OpenSSL
* to speak TLSv1 to perform the encryption itself.
*/
git__ssl_ctx = SSL_CTX_new(SSLv23_method());
if (!git__ssl_ctx) {
return -1;
}
if (!(git__ssl_ctx = SSL_CTX_new(SSLv23_method())))
goto error;

SSL_CTX_set_options(git__ssl_ctx, ssl_opts);
SSL_CTX_set_mode(git__ssl_ctx, SSL_MODE_AUTO_RETRY);
SSL_CTX_set_verify(git__ssl_ctx, SSL_VERIFY_NONE, NULL);
if (!SSL_CTX_set_default_verify_paths(git__ssl_ctx)) {
SSL_CTX_free(git__ssl_ctx);
git__ssl_ctx = NULL;
return -1;
}
if (!SSL_CTX_set_default_verify_paths(git__ssl_ctx))
goto error;

if (!ciphers) {
if (!ciphers)
ciphers = GIT_SSL_DEFAULT_CIPHERS;
}

if(!SSL_CTX_set_cipher_list(git__ssl_ctx, ciphers)) {
SSL_CTX_free(git__ssl_ctx);
git__ssl_ctx = NULL;
return -1;
}
if(!SSL_CTX_set_cipher_list(git__ssl_ctx, ciphers))
goto error;

if (init_bio_method() < 0) {
SSL_CTX_free(git__ssl_ctx);
git__ssl_ctx = NULL;
return -1;
}
if (init_bio_method() < 0)
goto error;

git__on_shutdown(shutdown_ssl);

return 0;

error:
giterr_set(GITERR_NET, "could not initialize openssl: %s",
ERR_error_string(ERR_get_error(), NULL));
SSL_CTX_free(git__ssl_ctx);
git__ssl_ctx = NULL;
return -1;
}

#if defined(GIT_THREADS) && defined(OPENSSL_LEGACY_API)
Expand Down

0 comments on commit 75395c8

Please sign in to comment.