]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
Make eccdata deallocate storage before exit.
authorNiels Möller <nisse@lysator.liu.se>
Thu, 12 Jul 2018 20:34:01 +0000 (22:34 +0200)
committerNiels Möller <nisse@lysator.liu.se>
Thu, 12 Jul 2018 20:34:01 +0000 (22:34 +0200)
ChangeLog
eccdata.c

index 4141e57dbb6e005fb4e91bddf857cd3a7f4ed83a..ccf82494193107e83b6b9ec8d71853fd04433a28 100644 (file)
--- 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  <nisse@lysator.liu.se>
 
index 92e244bd1346d02b55d453389d8551ec43491982..51ecde3592d73435d344196b6d3d3511c3e0c235 100644 (file)
--- 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;
 }