From: Niels Möller Date: Thu, 12 Jul 2018 20:34:01 +0000 (+0200) Subject: Make eccdata deallocate storage before exit. X-Git-Tag: nettle_3.5rc1~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=af7d1d76b03ef405e9f75ae28e8caf3b9d3d2b16;p=thirdparty%2Fnettle.git Make eccdata deallocate storage before exit. --- diff --git a/ChangeLog b/ChangeLog index 4141e57d..ccf82494 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ * eccdata.c (output_curve): Replace mpz_init_set_ui by mpz_set_ui, to fix memory leak. + (ecc_curve_clear): New function. + (main): Call it, to deallocate storage before exit. 2018-07-08 Niels Möller diff --git a/eccdata.c b/eccdata.c index 92e244bd..51ecde35 100644 --- a/eccdata.c +++ b/eccdata.c @@ -611,6 +611,31 @@ ecc_curve_init (struct ecc_curve *ecc, unsigned bit_size) ecc->bit_size = bit_size; } +static void +ecc_curve_clear (struct ecc_curve *ecc) +{ + mpz_clear (ecc->p); + mpz_clear (ecc->b); + mpz_clear (ecc->q); + ecc_clear (&ecc->g); + mpz_clear (ecc->d); + mpz_clear (ecc->t); + if (ecc->table) + { + size_t i; + for (i = 0; i < ecc->table_size; i++) + ecc_clear (&ecc->table[i]); + free (ecc->table); + } + if (ecc->ref) + { + size_t i; + for (i = 0; i < 3; i++) + ecc_clear (&ecc->ref[i]); + free (ecc->ref); + } +} + static unsigned ecc_table_size(unsigned bits, unsigned k, unsigned c) { @@ -1180,5 +1205,6 @@ main (int argc, char **argv) if (argc > 4) output_curve (&ecc, atoi(argv[4])); + ecc_curve_clear (&ecc); return EXIT_SUCCESS; }