diff options
Diffstat (limited to 'lib/libssl/ssl_lib.c')
-rw-r--r-- | lib/libssl/ssl_lib.c | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/lib/libssl/ssl_lib.c b/lib/libssl/ssl_lib.c index 7eb192eb2cd..d9e5166cdd2 100644 --- a/lib/libssl/ssl_lib.c +++ b/lib/libssl/ssl_lib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssl_lib.c,v 1.125 2017/01/21 04:16:49 jsing Exp $ */ +/* $OpenBSD: ssl_lib.c,v 1.126 2017/01/22 03:50:45 jsing Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -274,10 +274,15 @@ SSL_new(SSL_CTX *ctx) return (NULL); } - s = calloc(1, sizeof(SSL)); - if (s == NULL) - goto err; - + if ((s = calloc(1, sizeof(*s))) == NULL) { + SSLerr(SSL_F_SSL_NEW, ERR_R_MALLOC_FAILURE); + return (NULL); + } + if ((s->internal = calloc(1, sizeof(*s->internal))) == NULL) { + free(s); + SSLerr(SSL_F_SSL_NEW, ERR_R_MALLOC_FAILURE); + return (NULL); + } s->options = ctx->options; s->mode = ctx->mode; @@ -361,7 +366,7 @@ SSL_new(SSL_CTX *ctx) return (s); -err: + err: SSL_free(s); SSLerr(SSL_F_SSL_NEW, ERR_R_MALLOC_FAILURE); return (NULL); @@ -549,7 +554,6 @@ SSL_free(SSL *s) SSL_CTX_free(s->ctx); - free(s->next_proto_negotiated); free(s->alpn_client_proto_list); @@ -558,6 +562,7 @@ SSL_free(SSL *s) sk_SRTP_PROTECTION_PROFILE_free(s->srtp_profiles); #endif + free(s->internal); free(s); } @@ -1792,21 +1797,28 @@ ssl_session_LHASH_COMP(const void *arg1, const void *arg2) SSL_CTX * SSL_CTX_new(const SSL_METHOD *meth) { - SSL_CTX *ret = NULL; + SSL_CTX *ret; if (meth == NULL) { SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_NULL_SSL_METHOD_PASSED); return (NULL); } + if ((ret = calloc(1, sizeof(*ret))) == NULL) { + SSLerr(SSL_F_SSL_CTX_NEW, ERR_R_MALLOC_FAILURE); + return (NULL); + } + if ((ret->internal = calloc(1, sizeof(*ret->internal))) == NULL) { + free(ret); + SSLerr(SSL_F_SSL_CTX_NEW, ERR_R_MALLOC_FAILURE); + return (NULL); + } + if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0) { SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_X509_VERIFICATION_SETUP_PROBLEMS); goto err; } - ret = calloc(1, sizeof(SSL_CTX)); - if (ret == NULL) - goto err; ret->method = meth; @@ -1993,6 +2005,7 @@ SSL_CTX_free(SSL_CTX *a) free(a->alpn_client_proto_list); + free(a->internal); free(a); } |