aboutsummaryrefslogtreecommitdiffstats
path: root/ssl/ssl_sess.c
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2017-01-26 18:32:12 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2017-01-26 18:32:12 +0000
commit5315173646e65b5025be33013edc33eb9658e683 (patch)
tree06e2ebfcb3177eeb3cba0775d8e3ed98577e77da /ssl/ssl_sess.c
parente656c34a188598ebce6423c4fbc4860921d41be4 (diff)
downloadsrc-5315173646e65b5025be33013edc33eb9658e683.tar.gz
src-5315173646e65b5025be33013edc33eb9658e683.zip
Import OpenSSL 1.0.2k.vendor/openssl/1.0.2k
Notes
Notes: svn path=/vendor-crypto/openssl/dist/; revision=312823 svn path=/vendor-crypto/openssl/1.0.2k/; revision=312824; tag=vendor/openssl/1.0.2k
Diffstat (limited to 'ssl/ssl_sess.c')
-rw-r--r--ssl/ssl_sess.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/ssl/ssl_sess.c b/ssl/ssl_sess.c
index ed9855f90cf8..c3369a44aea7 100644
--- a/ssl/ssl_sess.c
+++ b/ssl/ssl_sess.c
@@ -769,6 +769,15 @@ int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *c)
* obtain the same session from an external cache)
*/
s = NULL;
+ } else if (s == NULL &&
+ lh_SSL_SESSION_retrieve(ctx->sessions, c) == NULL) {
+ /* s == NULL can also mean OOM error in lh_SSL_SESSION_insert ... */
+
+ /*
+ * ... so take back the extra reference and also don't add
+ * the session to the SSL_SESSION_list at this time
+ */
+ s = c;
}
/* Put at the head of the queue unless it is already in the cache */