summaryrefslogtreecommitdiffstats
path: root/lib/libssl/s3_lib.c
diff options
context:
space:
mode:
authorinoguchi <inoguchi@openbsd.org>2020-02-16 14:33:04 +0000
committerinoguchi <inoguchi@openbsd.org>2020-02-16 14:33:04 +0000
commitbcac99aca56d09d48b96334244dcd815cdfd62cc (patch)
tree12a3dda4409a5cb55f93d00dab08929a67346656 /lib/libssl/s3_lib.c
parentQuote variables in pf tag strings (diff)
downloadwireguard-openbsd-bcac99aca56d09d48b96334244dcd815cdfd62cc.tar.xz
wireguard-openbsd-bcac99aca56d09d48b96334244dcd815cdfd62cc.zip
Avoid leak for tmp.x25519
Changed to use local variable to hold malloc address rather than directly set to S3I(s)->tmp.x25519, and set that private_key pointer to S3I(s)->tmp.x25519 after all the "goto err;". Also added freezero for S3I(s)->tmp.x25519 to ssl3_free() and ssl3_clear(). ok jsing@ tb@
Diffstat (limited to 'lib/libssl/s3_lib.c')
-rw-r--r--lib/libssl/s3_lib.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/libssl/s3_lib.c b/lib/libssl/s3_lib.c
index 2832ef4a93a..dfd5893a2fa 100644
--- a/lib/libssl/s3_lib.c
+++ b/lib/libssl/s3_lib.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: s3_lib.c,v 1.190 2020/01/30 17:09:23 jsing Exp $ */
+/* $OpenBSD: s3_lib.c,v 1.191 2020/02/16 14:33:04 inoguchi Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
@@ -1563,6 +1563,7 @@ ssl3_free(SSL *s)
DH_free(S3I(s)->tmp.dh);
EC_KEY_free(S3I(s)->tmp.ecdh);
+ freezero(S3I(s)->tmp.x25519, X25519_KEY_LENGTH);
tls13_key_share_free(S3I(s)->hs_tls13.key_share);
tls13_secrets_destroy(S3I(s)->hs_tls13.secrets);
@@ -1596,6 +1597,8 @@ ssl3_clear(SSL *s)
EC_KEY_free(S3I(s)->tmp.ecdh);
S3I(s)->tmp.ecdh = NULL;
S3I(s)->tmp.ecdh_nid = NID_undef;
+ freezero(S3I(s)->tmp.x25519, X25519_KEY_LENGTH);
+ S3I(s)->tmp.x25519 = NULL;
freezero(S3I(s)->hs.sigalgs, S3I(s)->hs.sigalgs_len);
S3I(s)->hs.sigalgs = NULL;