summaryrefslogtreecommitdiffhomepage
path: root/signkey.c
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2017-05-26 21:08:43 +0800
committerMatt Johnston <matt@ucc.asn.au>2017-05-26 21:08:43 +0800
commit25607c04a7210fd309f83226c3bb4de74e0c9d4d (patch)
tree220ca69d0b89f829fae43615cedd26bbb84ec3e1 /signkey.c
parentcbd5be1b82c182d2e55656d29f19ae7f3ac91dea (diff)
add m_mp_free_multi, be more careful freeing when failing to load keys
--HG-- branch : fuzz
Diffstat (limited to 'signkey.c')
-rw-r--r--signkey.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/signkey.c b/signkey.c
index fa66a1b..f0c0f97 100644
--- a/signkey.c
+++ b/signkey.c
@@ -168,7 +168,8 @@ int buf_get_pub_key(buffer *buf, sign_key *key, enum signkey_type *type) {
key->dsskey = m_malloc(sizeof(*key->dsskey));
ret = buf_get_dss_pub_key(buf, key->dsskey);
if (ret == DROPBEAR_FAILURE) {
- m_free(key->dsskey);
+ dss_key_free(key->dsskey);
+ key->dsskey = NULL;
}
}
#endif
@@ -178,7 +179,8 @@ int buf_get_pub_key(buffer *buf, sign_key *key, enum signkey_type *type) {
key->rsakey = m_malloc(sizeof(*key->rsakey));
ret = buf_get_rsa_pub_key(buf, key->rsakey);
if (ret == DROPBEAR_FAILURE) {
- m_free(key->rsakey);
+ rsa_key_free(key->rsakey);
+ key->rsakey = NULL;
}
}
#endif
@@ -202,7 +204,6 @@ int buf_get_pub_key(buffer *buf, sign_key *key, enum signkey_type *type) {
TRACE2(("leave buf_get_pub_key"))
return ret;
-
}
/* returns DROPBEAR_SUCCESS on success, DROPBEAR_FAILURE on fail.
@@ -237,7 +238,8 @@ int buf_get_priv_key(buffer *buf, sign_key *key, enum signkey_type *type) {
key->dsskey = m_malloc(sizeof(*key->dsskey));
ret = buf_get_dss_priv_key(buf, key->dsskey);
if (ret == DROPBEAR_FAILURE) {
- m_free(key->dsskey);
+ dss_key_free(key->dsskey);
+ key->dsskey = NULL;
}
}
#endif
@@ -247,7 +249,8 @@ int buf_get_priv_key(buffer *buf, sign_key *key, enum signkey_type *type) {
key->rsakey = m_malloc(sizeof(*key->rsakey));
ret = buf_get_rsa_priv_key(buf, key->rsakey);
if (ret == DROPBEAR_FAILURE) {
- m_free(key->rsakey);
+ rsa_key_free(key->rsakey);
+ key->rsakey = NULL;
}
}
#endif