summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/a_object.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/asn1/a_object.c')
-rw-r--r--src/lib/libcrypto/asn1/a_object.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/lib/libcrypto/asn1/a_object.c b/src/lib/libcrypto/asn1/a_object.c
index 711b01f149..e10af97d36 100644
--- a/src/lib/libcrypto/asn1/a_object.c
+++ b/src/lib/libcrypto/asn1/a_object.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: a_object.c,v 1.29 2017/01/29 17:49:22 beck Exp $ */ 1/* $OpenBSD: a_object.c,v 1.30 2017/05/02 03:59:44 deraadt 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 *
@@ -231,8 +231,7 @@ i2a_ASN1_OBJECT(BIO *bp, ASN1_OBJECT *a)
231 return -1; 231 return -1;
232 i = i2t_ASN1_OBJECT(tmp, tlen, a); 232 i = i2t_ASN1_OBJECT(tmp, tlen, a);
233 if (i > (int)(tlen - 1)) { 233 if (i > (int)(tlen - 1)) {
234 explicit_bzero(tmp, tlen); 234 freezero(tmp, tlen);
235 free(tmp);
236 if ((tmp = malloc(i + 1)) == NULL) 235 if ((tmp = malloc(i + 1)) == NULL)
237 return -1; 236 return -1;
238 tlen = i + 1; 237 tlen = i + 1;
@@ -242,8 +241,7 @@ i2a_ASN1_OBJECT(BIO *bp, ASN1_OBJECT *a)
242 i = BIO_write(bp, "<INVALID>", 9); 241 i = BIO_write(bp, "<INVALID>", 9);
243 else 242 else
244 i = BIO_write(bp, tmp, i); 243 i = BIO_write(bp, tmp, i);
245 explicit_bzero(tmp, tlen); 244 freezero(tmp, tlen);
246 free(tmp);
247 return (i); 245 return (i);
248} 246}
249 247
@@ -319,9 +317,7 @@ c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long len)
319 317
320 /* detach data from object */ 318 /* detach data from object */
321 data = (unsigned char *)ret->data; 319 data = (unsigned char *)ret->data;
322 if (data != NULL) 320 freezero(data, ret->length);
323 explicit_bzero(data, ret->length);
324 free(data);
325 321
326 data = malloc(length); 322 data = malloc(length);
327 if (data == NULL) { 323 if (data == NULL) {
@@ -380,9 +376,7 @@ ASN1_OBJECT_free(ASN1_OBJECT *a)
380 a->sn = a->ln = NULL; 376 a->sn = a->ln = NULL;
381 } 377 }
382 if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA) { 378 if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA) {
383 if (a->data != NULL) 379 freezero((void *)a->data, a->length);
384 explicit_bzero((void *)a->data, a->length);
385 free((void *)a->data);
386 a->data = NULL; 380 a->data = NULL;
387 a->length = 0; 381 a->length = 0;
388 } 382 }