summaryrefslogtreecommitdiffstats
path: root/ssl/ssl_sess.c
diff options
context:
space:
mode:
authorEmilia Kasper <emilia@openssl.org>2015-10-01 13:54:11 +0200
committerEmilia Kasper <emilia@openssl.org>2015-10-05 19:03:52 +0200
commit67202973cf55eaac021706c183377b8040cf0c20 (patch)
treeff46f093352c40560a72395dd56015ac944b4daa /ssl/ssl_sess.c
parentbf0fc41266f17311c5db1e0541d3dd12eb27deb6 (diff)
Add PACKET_copy_all
Reviewed-by: Matt Caswell <matt@openssl.org>
Diffstat (limited to 'ssl/ssl_sess.c')
-rw-r--r--ssl/ssl_sess.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/ssl/ssl_sess.c b/ssl/ssl_sess.c
index 41bc4e11a3..7660292196 100644
--- a/ssl/ssl_sess.c
+++ b/ssl/ssl_sess.c
@@ -564,11 +564,14 @@ int ssl_get_prev_session(SSL *s, const PACKET *ext, const PACKET *session_id)
!(s->session_ctx->session_cache_mode &
SSL_SESS_CACHE_NO_INTERNAL_LOOKUP)) {
SSL_SESSION data;
+ size_t local_len;
data.ssl_version = s->version;
- data.session_id_length = len;
- if (len == 0)
- return 0;
- memcpy(data.session_id, PACKET_data(session_id), len);
+ if (!PACKET_copy_all(session_id, data.session_id,
+ sizeof(data.session_id),
+ &local_len)) {
+ goto err;
+ }
+ data.session_id_length = local_len;
CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX);
ret = lh_SSL_SESSION_retrieve(s->session_ctx->sessions, &data);
if (ret != NULL) {