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
commitc38927da47fa3c96cdcc7e4c81d9068bf01bf1fb (patch)
treec24afd4e5b05f485e6b42663d5dfdb335dc8117d /signkey.c
parent7ab8f61974601444046888da07f211c44e55e5a5 (diff)
add m_mp_free_multi, be more careful freeing when failing to load keys
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 2c29431..bc63632 100644
--- a/signkey.c
+++ b/signkey.c
@@ -167,7 +167,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
@@ -177,7 +178,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
@@ -201,7 +203,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.
@@ -236,7 +237,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
@@ -246,7 +248,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