Fix ex_data and session_dup issues
authorTodd Short <tshort@akamai.com>
Wed, 26 Apr 2017 18:05:49 +0000 (14:05 -0400)
committerMatt Caswell <matt@openssl.org>
Wed, 14 Jun 2017 09:38:51 +0000 (10:38 +0100)
commit8ab4fed9bdcc5b8498b3d59d2fa72dd045f63539
tree09d80a30db55902e9b4dc750a1ed0b6258facdfe
parent819d18f6116e97845ebe453128f3c2a78e42a785
Fix ex_data and session_dup issues

Code was added in commit b3c31a65 that overwrote the last ex_data value
using CRYPTO_dup_ex_data() causing a memory leak, and potentially
confusing the ex_data dup() callback.

In ssl_session_dup(), fix error handling (properly reference and up-ref
shared data) and new-up the ex_data before calling CRYPTO_dup_ex_data();
all other structures that dup ex_data have the destination ex_data new'd
before the dup.

Fix up some of the ex_data documentation.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3625)
crypto/ex_data.c
doc/crypto/CRYPTO_get_ex_new_index.pod
ssl/ssl_sess.c
test/exdatatest.c