summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2017-04-30 04:21:53 +0000
committerjsing <>2017-04-30 04:21:53 +0000
commit218193cef9ff51b530e3b4dba5b4fdf95fe01bb3 (patch)
treeab90b019f3a6b00f559c8d95d389322ca59d513e /src/lib
parentc24d2cd7917d204ee45c3ba761b4dd27fade46c5 (diff)
downloadopenbsd-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.c9
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}