summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortb <>2020-09-01 19:17:36 +0000
committertb <>2020-09-01 19:17:36 +0000
commit3333f6a5ada40ee7c61d25e9e148d2fb738ad4de (patch)
treee260348b0b8a124d19675ded616ca3e0d21e593d
parentd5f3a9753f359d5bbcbb51693103784c79f5f40e (diff)
downloadopenbsd-3333f6a5ada40ee7c61d25e9e148d2fb738ad4de.tar.gz
openbsd-3333f6a5ada40ee7c61d25e9e148d2fb738ad4de.tar.bz2
openbsd-3333f6a5ada40ee7c61d25e9e148d2fb738ad4de.zip
Zero out data to avoid leaving stack garbage in the tail of
the session id in case the copied session id is shorter than SSL_MAX_SESSION_ID_LENGTH. long standing bug pointed out by jsing
-rw-r--r--src/lib/libssl/ssl_sess.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lib/libssl/ssl_sess.c b/src/lib/libssl/ssl_sess.c
index d46c85411b..3f1b987a7c 100644
--- a/src/lib/libssl/ssl_sess.c
+++ b/src/lib/libssl/ssl_sess.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_sess.c,v 1.95 2020/09/01 17:45:17 tb Exp $ */ 1/* $OpenBSD: ssl_sess.c,v 1.96 2020/09/01 19:17:36 tb Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -423,6 +423,8 @@ ssl_session_from_cache(SSL *s, CBS *session_id)
423 SSL_SESS_CACHE_NO_INTERNAL_LOOKUP)) 423 SSL_SESS_CACHE_NO_INTERNAL_LOOKUP))
424 return NULL; 424 return NULL;
425 425
426 memset(&data, 0, sizeof(data));
427
426 data.ssl_version = s->version; 428 data.ssl_version = s->version;
427 data.session_id_length = CBS_len(session_id); 429 data.session_id_length = CBS_len(session_id);
428 memcpy(data.session_id, CBS_data(session_id), CBS_len(session_id)); 430 memcpy(data.session_id, CBS_data(session_id), CBS_len(session_id));