aboutsummaryrefslogtreecommitdiffstats
path: root/ssl
diff options
context:
space:
mode:
authorFdaSilvaYY <fdasilvayy@gmail.com>2016-02-13 19:29:34 +0100
committerRich Salz <rsalz@openssl.org>2016-04-28 14:37:41 -0400
commit25a807bcb9509c6fccfbbd9d02119772ccb0f23e (patch)
tree66ebeec7f6213a64318b8f26fd064860832bf0e1 /ssl
parent8fdc99cb5dbf1a79b106cc635c82f59956e39108 (diff)
downloadopenssl-25a807bcb9509c6fccfbbd9d02119772ccb0f23e.tar.gz
Add checks on CRYPTO_new_ex_data return value
Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/996)
Diffstat (limited to 'ssl')
-rw-r--r--ssl/ssl_lib.c6
-rw-r--r--ssl/ssl_sess.c7
2 files changed, 9 insertions, 4 deletions
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;
}