summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authortedu <tedu@openbsd.org>2014-05-07 13:45:29 +0000
committertedu <tedu@openbsd.org>2014-05-07 13:45:29 +0000
commitb3619e6706d55c07a60a9414df8d9c5151b5e12d (patch)
tree12d43ffd80f5e761b2dddde26bc0df7a88ad51e4 /lib
parentback out the previous ICMP simplifying diff, it caused livelocks. (diff)
downloadwireguard-openbsd-b3619e6706d55c07a60a9414df8d9c5151b5e12d.tar.xz
wireguard-openbsd-b3619e6706d55c07a60a9414df8d9c5151b5e12d.zip
revert, thanks sthen
Diffstat (limited to 'lib')
-rw-r--r--lib/libcrypto/bn/bn_lib.c26
-rw-r--r--lib/libssl/src/crypto/bn/bn_lib.c26
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;
}