aboutsummaryrefslogtreecommitdiff
path: root/src/dh.c
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2016-01-01 19:16:49 +0100
committerAndreas Schneider <asn@cryptomilk.org>2018-07-05 14:35:13 +0200
commitdb9da99a36a4d83b77f8f8e90482c2d6cc0e20de (patch)
tree46a2f939941cc85e736de5627e7430cf4e2937f7 /src/dh.c
parentc3dac948c916c1330419980f71a72c253efd19b8 (diff)
downloadlibssh-db9da99a36a4d83b77f8f8e90482c2d6cc0e20de.tar.gz
libssh-db9da99a36a4d83b77f8f8e90482c2d6cc0e20de.tar.xz
libssh-db9da99a36a4d83b77f8f8e90482c2d6cc0e20de.zip
bignum: Make bignum_free safer
Signed-off-by: Aris Adamantiadis <aris@0xbadc0de.be> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src/dh.c')
-rw-r--r--src/dh.c37
1 files changed, 16 insertions, 21 deletions
diff --git a/src/dh.c b/src/dh.c
index a58cfa9e..1d422c82 100644
--- a/src/dh.c
+++ b/src/dh.c
@@ -142,33 +142,31 @@ int ssh_dh_init(void)
#if defined(HAVE_LIBGCRYPT)
bignum_bin2bn(p_group1_value, P_GROUP1_LEN, &p_group1);
if (p_group1 == NULL) {
- bignum_free(g);
- g = NULL;
- return -1;
+ bignum_safe_free(g);
+
+ return SSH_ERROR;
}
bignum_bin2bn(p_group14_value, P_GROUP14_LEN, &p_group14);
if (p_group14 == NULL) {
- bignum_free(g);
- bignum_free(p_group1);
- g = NULL;
- p_group1 = NULL;
- return -1;
+ bignum_safe_free(g);
+ bignum_safe_free(p_group1);
+
+ return SSH_ERROR;
}
#elif defined(HAVE_LIBCRYPTO)
p_group1 = bignum_new();
if (p_group1 == NULL) {
- bignum_free(g);
- g = NULL;
- return -1;
+ bignum_safe_free(g);
+
+ return SSH_ERROR;
}
bignum_bin2bn(p_group1_value, P_GROUP1_LEN, p_group1);
p_group14 = bignum_new();
if (p_group14 == NULL) {
- bignum_free(g);
- bignum_free(p_group1);
- g = NULL;
- p_group1 = NULL;
+ bignum_safe_free(g);
+ bignum_safe_free(p_group1);
+
return SSH_ERROR;
}
bignum_bin2bn(p_group14_value, P_GROUP14_LEN, p_group14);
@@ -194,12 +192,9 @@ void ssh_dh_finalize(void)
return;
}
- bignum_free(g);
- g = NULL;
- bignum_free(p_group1);
- p_group1 = NULL;
- bignum_free(p_group14);
- p_group14 = NULL;
+ bignum_safe_free(g);
+ bignum_safe_free(p_group1);
+ bignum_safe_free(p_group14);
dh_crypto_initialized = 0;
}