Stricter initialization of the SSL context structure

This commit is contained in:
Pierre Pronchery 2014-05-13 20:35:34 +02:00
parent 8b0ea74a48
commit 0853dc4794

View File

@ -209,9 +209,18 @@ static int _init_client(SSLTransport * ssl, char const * name)
struct sockaddr_in * sa;
#endif
if((ssl->ssl_ctx = SSL_CTX_new(TLSv1_client_method())) == NULL)
if((ssl->ssl_ctx = SSL_CTX_new(TLSv1_client_method())) == NULL
|| SSL_CTX_set_cipher_list(ssl->ssl_ctx,
SSL_DEFAULT_CIPHER_LIST) != 1
|| SSL_CTX_load_verify_locations(ssl->ssl_ctx, NULL,
"/etc/openssl/certs") != 1)
{
if(ssl->ssl_ctx != NULL)
SSL_CTX_free(ssl->ssl_ctx);
ssl->ssl_ctx = NULL;
/* FIXME report the error */
return -1;
}
ssl->u.client.transport = ssl;
ssl->u.client.fd = -1;
/* obtain the remote address */
@ -273,9 +282,18 @@ static int _init_server(SSLTransport * ssl, char const * name)
struct sockaddr_in * sa;
#endif
if((ssl->ssl_ctx = SSL_CTX_new(TLSv1_server_method())) == NULL)
if((ssl->ssl_ctx = SSL_CTX_new(TLSv1_server_method())) == NULL
|| SSL_CTX_set_cipher_list(ssl->ssl_ctx,
SSL_DEFAULT_CIPHER_LIST) != 1
|| SSL_CTX_load_verify_locations(ssl->ssl_ctx, NULL,
"/etc/openssl/certs") != 1)
{
if(ssl->ssl_ctx != NULL)
SSL_CTX_free(ssl->ssl_ctx);
ssl->ssl_ctx = NULL;
/* FIXME report the error */
return -1;
}
ssl->u.server.fd = -1;
/* obtain the local address */
if((ssl->ai = _init_address(name, TCP_FAMILY, AI_PASSIVE)) == NULL)