From: Niels Möller Date: Thu, 12 Jul 2018 20:37:36 +0000 (+0200) Subject: Fix at-exit leak in eratosthenes program. X-Git-Tag: nettle_3.5rc1~56 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0355cfad41931c5583e391bfcd2deb806a6d7f5e;p=thirdparty%2Fnettle.git Fix at-exit leak in eratosthenes program. --- diff --git a/ChangeLog b/ChangeLog index ccf82494..0dbacaa0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2018-07-12 Niels Möller + * examples/eratosthenes.c (main): Don't allocate bitmap storage + for limit == 2 (early exit), closing memory leak at exit. + * eccdata.c (output_curve): Replace mpz_init_set_ui by mpz_set_ui, to fix memory leak. (ecc_curve_clear): New function. diff --git a/examples/eratosthenes.c b/examples/eratosthenes.c index 7a54561d..415c6d25 100644 --- a/examples/eratosthenes.c +++ b/examples/eratosthenes.c @@ -314,8 +314,6 @@ main (int argc, char **argv) root = (root - 1) | 1; /* Represents odd numbers from 3 up. */ sieve_nbits = (root - 1) / 2; - sieve = vector_alloc(sieve_nbits ); - vector_init(sieve, sieve_nbits); if (verbose) fprintf(stderr, "Initial sieve using %lu bits.\n", sieve_nbits); @@ -326,6 +324,9 @@ main (int argc, char **argv) if (limit == 2) return EXIT_SUCCESS; + sieve = vector_alloc(sieve_nbits); + vector_init(sieve, sieve_nbits); + for (bit = 0; bit < sieve_nbits; bit = vector_find_next(sieve, bit + 1, sieve_nbits))