diff options
author | jsing <> | 2017-04-30 04:21:53 +0000 |
---|---|---|
committer | jsing <> | 2017-04-30 04:21:53 +0000 |
commit | 218193cef9ff51b530e3b4dba5b4fdf95fe01bb3 (patch) | |
tree | ab90b019f3a6b00f559c8d95d389322ca59d513e /src/lib | |
parent | c24d2cd7917d204ee45c3ba761b4dd27fade46c5 (diff) | |
download | openbsd-218193cef9ff51b530e3b4dba5b4fdf95fe01bb3.tar.gz openbsd-218193cef9ff51b530e3b4dba5b4fdf95fe01bb3.tar.bz2 openbsd-218193cef9ff51b530e3b4dba5b4fdf95fe01bb3.zip |
Switch back to freezero() and explicitly initialise data_len to zero. The
previous code was safe since data would always be NULL if data_len was
uninitialised, however compilers cannot know this.
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libssl/ssl_asn1.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/lib/libssl/ssl_asn1.c b/src/lib/libssl/ssl_asn1.c index b27be00abe..fc252feb99 100644 --- a/src/lib/libssl/ssl_asn1.c +++ b/src/lib/libssl/ssl_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_asn1.c,v 1.53 2017/04/16 06:26:55 otto Exp $ */ | 1 | /* $OpenBSD: ssl_asn1.c,v 1.54 2017/04/30 04:21:53 jsing Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2016 Joel Sing <jsing@openbsd.org> | 4 | * Copyright (c) 2016 Joel Sing <jsing@openbsd.org> |
@@ -52,8 +52,8 @@ i2d_SSL_SESSION(SSL_SESSION *s, unsigned char **pp) | |||
52 | CBB peer_cert, sidctx, verify_result, hostname, lifetime, ticket; | 52 | CBB peer_cert, sidctx, verify_result, hostname, lifetime, ticket; |
53 | CBB value; | 53 | CBB value; |
54 | unsigned char *data = NULL, *peer_cert_bytes = NULL; | 54 | unsigned char *data = NULL, *peer_cert_bytes = NULL; |
55 | size_t data_len = 0; | ||
55 | int len, rv = -1; | 56 | int len, rv = -1; |
56 | size_t data_len; | ||
57 | uint16_t cid; | 57 | uint16_t cid; |
58 | 58 | ||
59 | if (s == NULL) | 59 | if (s == NULL) |
@@ -205,12 +205,9 @@ i2d_SSL_SESSION(SSL_SESSION *s, unsigned char **pp) | |||
205 | rv = (int)data_len; | 205 | rv = (int)data_len; |
206 | 206 | ||
207 | err: | 207 | err: |
208 | if (data != NULL) | ||
209 | explicit_bzero(data, data_len); | ||
210 | |||
211 | CBB_cleanup(&session); | 208 | CBB_cleanup(&session); |
209 | freezero(data, data_len); | ||
212 | free(peer_cert_bytes); | 210 | free(peer_cert_bytes); |
213 | free(data); | ||
214 | 211 | ||
215 | return rv; | 212 | return rv; |
216 | } | 213 | } |