diff options
author | 2020-02-16 14:33:04 +0000 | |
---|---|---|
committer | 2020-02-16 14:33:04 +0000 | |
commit | bcac99aca56d09d48b96334244dcd815cdfd62cc (patch) | |
tree | 12a3dda4409a5cb55f93d00dab08929a67346656 /lib/libssl/s3_lib.c | |
parent | Quote variables in pf tag strings (diff) | |
download | wireguard-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.c | 5 |
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; |