# HG changeset patch # User Matt Johnston # Date 1425221076 -28800 # Node ID 063c38ea622be3c51209fbe9c3cf3078ea72ea42 # Parent fd3712d1ff7f0719cc6e85b474374dc5db2aeef0 Fix some memory leaks in ecc code diff -r fd3712d1ff7f -r 063c38ea622b ecc.c --- a/ecc.c Sat Feb 28 23:49:39 2015 +0800 +++ b/ecc.c Sun Mar 01 22:44:36 2015 +0800 @@ -86,11 +86,6 @@ { mp_int *prime, *b, *t1, *t2; int err; - - prime = m_malloc(sizeof(mp_int)); - b = m_malloc(sizeof(mp_int)); - t1 = m_malloc(sizeof(mp_int)); - t2 = m_malloc(sizeof(mp_int)); m_mp_alloc_init_multi(&prime, &b, &t1, &t2, NULL); diff -r fd3712d1ff7f -r 063c38ea622b ecdsa.c --- a/ecdsa.c Sat Feb 28 23:49:39 2015 +0800 +++ b/ecdsa.c Sun Mar 01 22:44:36 2015 +0800 @@ -409,7 +409,7 @@ out: ltc_ecc_del_point(mG); ltc_ecc_del_point(mQ); - mp_clear_multi(r, s, v, w, u1, u2, p, e, m, NULL); + ltc_deinit_multi(r, s, v, w, u1, u2, p, e, m, NULL); if (mp != NULL) { ltc_mp.montgomery_deinit(mp); } diff -r fd3712d1ff7f -r 063c38ea622b signkey.c --- a/signkey.c Sat Feb 28 23:49:39 2015 +0800 +++ b/signkey.c Sun Mar 01 22:44:36 2015 +0800 @@ -187,6 +187,7 @@ if (eck) { if (*eck) { ecc_free(*eck); + m_free(*eck); *eck = NULL; } *eck = buf_get_ecdsa_pub_key(buf); @@ -255,6 +256,7 @@ if (eck) { if (*eck) { ecc_free(*eck); + m_free(*eck); *eck = NULL; } *eck = buf_get_ecdsa_priv_key(buf); @@ -355,18 +357,21 @@ #ifdef DROPBEAR_ECC_256 if (key->ecckey256) { ecc_free(key->ecckey256); + m_free(key->ecckey256); key->ecckey256 = NULL; } #endif #ifdef DROPBEAR_ECC_384 if (key->ecckey384) { ecc_free(key->ecckey384); + m_free(key->ecckey384); key->ecckey384 = NULL; } #endif #ifdef DROPBEAR_ECC_521 if (key->ecckey521) { ecc_free(key->ecckey521); + m_free(key->ecckey521); key->ecckey521 = NULL; } #endif