Am Sunday 16 September 2012 schrieb Niels Möller:
Tim Ruehsen tim.ruehsen@gmx.de writes:
Yes, it was some hours of work, but here is a patch that releases all memory and now runs fine with valgrind.
I've now done the same, in a slightly different manner. I first tried to keep the convention that strings are passed as two arguments (length, pointer), and tried to make callers always allocate the data, and callees always free it. That turned out to be a bit inconvenient in a few places. So I rewrote it with a simple string class, and then I could just as well put all allocated strings on a linked list to be freed at the end.
I'll try to clean it up and commit it soon.
Looks like you meanwhile comitted it.
There are just two little things left open: * added mpz_clear in rsa-encrypt.c * added nettle_buffer_clear, rsa_private_key_clear and free in rsa-keygen.c
Regards, Tim
diff --git a/examples/rsa-encrypt.c b/examples/rsa-encrypt.c index 70d1503..ca1a8cd 100644 --- a/examples/rsa-encrypt.c +++ b/examples/rsa-encrypt.c @@ -253,7 +253,9 @@ main(int argc, char **argv) }
write_bignum(stdout, x); - + + mpz_clear(x); + if (!process_file(&ctx, stdin, stdout)) return EXIT_FAILURE; diff --git a/examples/rsa-keygen.c b/examples/rsa-keygen.c index 0ca39b4..165e6f4 100644 --- a/examples/rsa-keygen.c +++ b/examples/rsa-keygen.c @@ -160,5 +160,12 @@ main(int argc, char **argv) return EXIT_FAILURE; }
+ nettle_buffer_clear(&pub_buffer); + nettle_buffer_clear(&priv_buffer); + rsa_private_key_clear(&priv); + rsa_public_key_clear(&pub); + free(pub_name); + + return EXIT_SUCCESS; }