mirror of
https://github.com/openssl/openssl.git
synced 2024-11-27 05:21:51 +08:00
Fix a ssl session leak due to OOM in lh_SSL_SESSION_insert
- s == NULL can mean c is a new session *or* lh_insert was unable to create a hash entry. - use lh_SSL_SESSION_retrieve to check for this error condition. - If it happens simply remove the extra reference again. Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/2138)
This commit is contained in:
parent
c2114afc16
commit
38088ce993
@ -678,6 +678,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 */
|
||||
|
Loading…
Reference in New Issue
Block a user