diff options
Diffstat (limited to 'src/lib/libcrypto/bn/bn_lib.c')
-rw-r--r-- | src/lib/libcrypto/bn/bn_lib.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/lib/libcrypto/bn/bn_lib.c b/src/lib/libcrypto/bn/bn_lib.c index f2736e31c3..8aeeb5304f 100644 --- a/src/lib/libcrypto/bn/bn_lib.c +++ b/src/lib/libcrypto/bn/bn_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_lib.c,v 1.37 2017/01/29 17:49:22 beck Exp $ */ | 1 | /* $OpenBSD: bn_lib.c,v 1.38 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 | * |
@@ -220,10 +220,8 @@ BN_clear_free(BIGNUM *a) | |||
220 | if (a == NULL) | 220 | if (a == NULL) |
221 | return; | 221 | return; |
222 | bn_check_top(a); | 222 | bn_check_top(a); |
223 | if (a->d != NULL && !(BN_get_flags(a, BN_FLG_STATIC_DATA))) { | 223 | if (a->d != NULL && !(BN_get_flags(a, BN_FLG_STATIC_DATA))) |
224 | explicit_bzero(a->d, a->dmax * sizeof(a->d[0])); | 224 | freezero(a->d, a->dmax * sizeof(a->d[0])); |
225 | free(a->d); | ||
226 | } | ||
227 | i = BN_get_flags(a, BN_FLG_MALLOCED); | 225 | i = BN_get_flags(a, BN_FLG_MALLOCED); |
228 | explicit_bzero(a, sizeof(BIGNUM)); | 226 | explicit_bzero(a, sizeof(BIGNUM)); |
229 | if (i) | 227 | if (i) |
@@ -393,10 +391,8 @@ bn_expand2(BIGNUM *b, int words) | |||
393 | BN_ULONG *a = bn_expand_internal(b, words); | 391 | BN_ULONG *a = bn_expand_internal(b, words); |
394 | if (!a) | 392 | if (!a) |
395 | return NULL; | 393 | return NULL; |
396 | if (b->d) { | 394 | if (b->d) |
397 | explicit_bzero(b->d, b->dmax * sizeof(b->d[0])); | 395 | freezero(b->d, b->dmax * sizeof(b->d[0])); |
398 | free(b->d); | ||
399 | } | ||
400 | b->d = a; | 396 | b->d = a; |
401 | b->dmax = words; | 397 | b->dmax = words; |
402 | } | 398 | } |