diff options
author | 2014-05-07 13:45:29 +0000 | |
---|---|---|
committer | 2014-05-07 13:45:29 +0000 | |
commit | b3619e6706d55c07a60a9414df8d9c5151b5e12d (patch) | |
tree | 12d43ffd80f5e761b2dddde26bc0df7a88ad51e4 /lib | |
parent | back out the previous ICMP simplifying diff, it caused livelocks. (diff) | |
download | wireguard-openbsd-b3619e6706d55c07a60a9414df8d9c5151b5e12d.tar.xz wireguard-openbsd-b3619e6706d55c07a60a9414df8d9c5151b5e12d.zip |
revert, thanks sthen
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libcrypto/bn/bn_lib.c | 26 | ||||
-rw-r--r-- | lib/libssl/src/crypto/bn/bn_lib.c | 26 |
2 files changed, 34 insertions, 18 deletions
diff --git a/lib/libcrypto/bn/bn_lib.c b/lib/libcrypto/bn/bn_lib.c index a8022f66680..9787a31dbbf 100644 --- a/lib/libcrypto/bn/bn_lib.c +++ b/lib/libcrypto/bn/bn_lib.c @@ -226,11 +226,22 @@ void BN_clear_free(BIGNUM *a) free(a); } -void -BN_free(BIGNUM *a) -{ - BN_clear_free(a); -} +void BN_free(BIGNUM *a) + { + if (a == NULL) return; + bn_check_top(a); + if ((a->d != NULL) && !(BN_get_flags(a,BN_FLG_STATIC_DATA))) + free(a->d); + if (a->flags & BN_FLG_MALLOCED) + free(a); + else + { +#ifndef OPENSSL_NO_DEPRECATED + a->flags|=BN_FLG_FREE; +#endif + a->d = NULL; + } + } void BN_init(BIGNUM *a) { @@ -389,10 +400,7 @@ BIGNUM *bn_expand2(BIGNUM *b, int words) { BN_ULONG *a = bn_expand_internal(b, words); if(!a) return NULL; - if(b->d) { - OPENSSL_cleanse(b->d, b->dmax * sizeof(b->d[0])); - free(b->d); - } + if(b->d) free(b->d); b->d=a; b->dmax=words; } diff --git a/lib/libssl/src/crypto/bn/bn_lib.c b/lib/libssl/src/crypto/bn/bn_lib.c index a8022f66680..9787a31dbbf 100644 --- a/lib/libssl/src/crypto/bn/bn_lib.c +++ b/lib/libssl/src/crypto/bn/bn_lib.c @@ -226,11 +226,22 @@ void BN_clear_free(BIGNUM *a) free(a); } -void -BN_free(BIGNUM *a) -{ - BN_clear_free(a); -} +void BN_free(BIGNUM *a) + { + if (a == NULL) return; + bn_check_top(a); + if ((a->d != NULL) && !(BN_get_flags(a,BN_FLG_STATIC_DATA))) + free(a->d); + if (a->flags & BN_FLG_MALLOCED) + free(a); + else + { +#ifndef OPENSSL_NO_DEPRECATED + a->flags|=BN_FLG_FREE; +#endif + a->d = NULL; + } + } void BN_init(BIGNUM *a) { @@ -389,10 +400,7 @@ BIGNUM *bn_expand2(BIGNUM *b, int words) { BN_ULONG *a = bn_expand_internal(b, words); if(!a) return NULL; - if(b->d) { - OPENSSL_cleanse(b->d, b->dmax * sizeof(b->d[0])); - free(b->d); - } + if(b->d) free(b->d); b->d=a; b->dmax=words; } |