From 25a807bcb9509c6fccfbbd9d02119772ccb0f23e Mon Sep 17 00:00:00 2001 From: FdaSilvaYY Date: Sat, 13 Feb 2016 19:29:34 +0100 Subject: Add checks on CRYPTO_new_ex_data return value Reviewed-by: Richard Levitte Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/996) --- ssl/ssl_lib.c | 6 ++++-- ssl/ssl_sess.c | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'ssl') diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 81c4b6710e..e00c1191b5 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -751,7 +751,8 @@ SSL *SSL_new(SSL_CTX *ctx) if (!SSL_clear(s)) goto err; - CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL, s, &s->ex_data); + if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL, s, &s->ex_data)) + goto err; #ifndef OPENSSL_NO_PSK s->psk_client_callback = ctx->psk_client_callback; @@ -2441,7 +2442,8 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth) if ((ret->client_CA = sk_X509_NAME_new_null()) == NULL) goto err; - CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_CTX, ret, &ret->ex_data); + if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_CTX, ret, &ret->ex_data)) + goto err; /* No compression for DTLS */ if (!(meth->ssl3_enc->enc_flags & SSL_ENC_FLAG_DTLS)) diff --git a/ssl/ssl_sess.c b/ssl/ssl_sess.c index d5b7fe3310..3b9a9f7535 100644 --- a/ssl/ssl_sess.c +++ b/ssl/ssl_sess.c @@ -198,8 +198,11 @@ SSL_SESSION *SSL_SESSION_new(void) return NULL; } - CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data); - + if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data)) { + CRYPTO_THREAD_lock_free(ss->lock); + OPENSSL_free(ss); + return NULL; + } return ss; } -- cgit v1.2.3