summaryrefslogtreecommitdiffstats
path: root/ssl/ssl_sess.c
diff options
context:
space:
mode:
authorTodd Short <tshort@akamai.com>2017-06-26 09:21:20 -0400
committerBenjamin Kaduk <kaduk@mit.edu>2017-06-28 14:53:23 -0500
commiteed3ec90478af1e1fd3a2733293c751d2181f7f7 (patch)
treea2f524c08711ca672eeb021f81d13d3e508b118f /ssl/ssl_sess.c
parent3668721d3af2648aaa4c443b9d7a5b0e4bdd200f (diff)
ssl_session_dup() missing ext.alpn_session
Properly copy ext.alpn_session in ssl_session_dup() Use OPENSSL_strndup() as that's used in ssl_asn1.c Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Ben Kaduk <kaduk@mit.edu> (Merged from https://github.com/openssl/openssl/pull/3770)
Diffstat (limited to 'ssl/ssl_sess.c')
-rw-r--r--ssl/ssl_sess.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ssl/ssl_sess.c b/ssl/ssl_sess.c
index df992bd2f3..e7fe714e58 100644
--- a/ssl/ssl_sess.c
+++ b/ssl/ssl_sess.c
@@ -122,6 +122,7 @@ SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket)
dest->ext.supportedgroups = NULL;
#endif
dest->ext.tick = NULL;
+ dest->ext.alpn_selected = NULL;
#ifndef OPENSSL_NO_SRP
dest->srp_username = NULL;
#endif
@@ -212,6 +213,15 @@ SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket)
dest->ext.ticklen = 0;
}
+ if (src->ext.alpn_selected) {
+ dest->ext.alpn_selected =
+ (unsigned char*)OPENSSL_strndup((char*)src->ext.alpn_selected,
+ src->ext.alpn_selected_len);
+ if (dest->ext.alpn_selected == NULL) {
+ goto err;
+ }
+ }
+
#ifndef OPENSSL_NO_SRP
if (src->srp_username) {
dest->srp_username = OPENSSL_strdup(src->srp_username);