Mercurial > dropbear
diff bignum.c @ 1409:c721e8c42d2a
add m_mp_free_multi, be more careful freeing when failing to load keys
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Fri, 26 May 2017 21:08:43 +0800 |
parents | 2bb4c662d1c2 |
children | 1051e4eea25a |
line wrap: on
line diff
--- a/bignum.c Sat Jun 03 09:45:55 2017 +0800 +++ b/bignum.c Fri May 26 21:08:43 2017 +0800 @@ -68,6 +68,22 @@ va_end(args); } +void m_mp_free_multi(mp_int **mp, ...) +{ + mp_int** cur_arg = mp; + va_list args; + + va_start(args, mp); /* init args to next argument from caller */ + while (cur_arg != NULL) { + if (*cur_arg) { + mp_clear(*cur_arg); + } + m_free(*cur_arg); + cur_arg = va_arg(args, mp_int**); + } + va_end(args); +} + void bytes_to_mp(mp_int *mp, const unsigned char* bytes, unsigned int len) { if (mp_read_unsigned_bin(mp, (unsigned char*)bytes, len) != MP_OKAY) {