From: Guus Sliepen Date: Tue, 23 Dec 2008 23:14:37 +0000 (+0000) Subject: Apply patch from Max Rijevski fixing a memory leak when closing connections. X-Git-Tag: release-1.0.9~2 X-Git-Url: https://git.librecmc.org/?p=oweals%2Ftinc.git;a=commitdiff_plain;h=099bc56f53e7d3cb7b799d26ff9535673ff03e1c Apply patch from Max Rijevski fixing a memory leak when closing connections. It also cleans up more when stopping tinc, helping tools like valgrind. --- diff --git a/src/connection.c b/src/connection.c index 53c0fd0..9fd4002 100644 --- a/src/connection.c +++ b/src/connection.c @@ -90,12 +90,31 @@ void free_connection(connection_t *c) if(c->outkey) free(c->outkey); + if(c->inctx) { + EVP_CIPHER_CTX_cleanup(c->inctx); + free(c->inctx); + } + + if(c->outctx) { + EVP_CIPHER_CTX_cleanup(c->outctx); + free(c->outctx); + } + if(c->mychallenge) free(c->mychallenge); if(c->hischallenge) free(c->hischallenge); + if(c->config_tree) + exit_configuration(&c->config_tree); + + if(c->outbuf) + free(c->outbuf); + + if(c->rsa_key) + RSA_free(c->rsa_key); + free(c); } diff --git a/src/tincd.c b/src/tincd.c index b22a810..e65fec4 100644 --- a/src/tincd.c +++ b/src/tincd.c @@ -510,7 +510,19 @@ end: remove_pid(pidfilename); #endif + if (identname) free(identname); + if (netname) free(netname); + if (pidfilename) free(pidfilename); + if (logfilename) free(logfilename); + if (myport) free(myport); + if (device) free(device); + if (confbase) free(confbase); + EVP_cleanup(); + ENGINE_cleanup(); + CRYPTO_cleanup_all_ex_data(); + ERR_remove_state(0); + ERR_free_strings(); return status; }