mirror of
https://github.com/clearml/dropbear
synced 2025-04-06 13:45:06 +00:00
Fix some memory leaks in ecc code
This commit is contained in:
parent
3113932151
commit
3317916111
5
ecc.c
5
ecc.c
@ -86,11 +86,6 @@ static int ecc_is_point(ecc_key *key)
|
|||||||
{
|
{
|
||||||
mp_int *prime, *b, *t1, *t2;
|
mp_int *prime, *b, *t1, *t2;
|
||||||
int err;
|
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);
|
m_mp_alloc_init_multi(&prime, &b, &t1, &t2, NULL);
|
||||||
|
|
||||||
|
2
ecdsa.c
2
ecdsa.c
@ -409,7 +409,7 @@ int buf_ecdsa_verify(buffer *buf, ecc_key *key, buffer *data_buf) {
|
|||||||
out:
|
out:
|
||||||
ltc_ecc_del_point(mG);
|
ltc_ecc_del_point(mG);
|
||||||
ltc_ecc_del_point(mQ);
|
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) {
|
if (mp != NULL) {
|
||||||
ltc_mp.montgomery_deinit(mp);
|
ltc_mp.montgomery_deinit(mp);
|
||||||
}
|
}
|
||||||
|
@ -187,6 +187,7 @@ int buf_get_pub_key(buffer *buf, sign_key *key, enum signkey_type *type) {
|
|||||||
if (eck) {
|
if (eck) {
|
||||||
if (*eck) {
|
if (*eck) {
|
||||||
ecc_free(*eck);
|
ecc_free(*eck);
|
||||||
|
m_free(*eck);
|
||||||
*eck = NULL;
|
*eck = NULL;
|
||||||
}
|
}
|
||||||
*eck = buf_get_ecdsa_pub_key(buf);
|
*eck = buf_get_ecdsa_pub_key(buf);
|
||||||
@ -255,6 +256,7 @@ int buf_get_priv_key(buffer *buf, sign_key *key, enum signkey_type *type) {
|
|||||||
if (eck) {
|
if (eck) {
|
||||||
if (*eck) {
|
if (*eck) {
|
||||||
ecc_free(*eck);
|
ecc_free(*eck);
|
||||||
|
m_free(*eck);
|
||||||
*eck = NULL;
|
*eck = NULL;
|
||||||
}
|
}
|
||||||
*eck = buf_get_ecdsa_priv_key(buf);
|
*eck = buf_get_ecdsa_priv_key(buf);
|
||||||
@ -355,18 +357,21 @@ void sign_key_free(sign_key *key) {
|
|||||||
#ifdef DROPBEAR_ECC_256
|
#ifdef DROPBEAR_ECC_256
|
||||||
if (key->ecckey256) {
|
if (key->ecckey256) {
|
||||||
ecc_free(key->ecckey256);
|
ecc_free(key->ecckey256);
|
||||||
|
m_free(key->ecckey256);
|
||||||
key->ecckey256 = NULL;
|
key->ecckey256 = NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef DROPBEAR_ECC_384
|
#ifdef DROPBEAR_ECC_384
|
||||||
if (key->ecckey384) {
|
if (key->ecckey384) {
|
||||||
ecc_free(key->ecckey384);
|
ecc_free(key->ecckey384);
|
||||||
|
m_free(key->ecckey384);
|
||||||
key->ecckey384 = NULL;
|
key->ecckey384 = NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef DROPBEAR_ECC_521
|
#ifdef DROPBEAR_ECC_521
|
||||||
if (key->ecckey521) {
|
if (key->ecckey521) {
|
||||||
ecc_free(key->ecckey521);
|
ecc_free(key->ecckey521);
|
||||||
|
m_free(key->ecckey521);
|
||||||
key->ecckey521 = NULL;
|
key->ecckey521 = NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user