Apply patch from Max Rijevski fixing a memory leak when closing connections.
It also cleans up more when stopping tinc, helping tools like valgrind.
This commit is contained in:
parent
de032054de
commit
099bc56f53
2 changed files with 31 additions and 0 deletions
|
@ -90,12 +90,31 @@ void free_connection(connection_t *c)
|
||||||
if(c->outkey)
|
if(c->outkey)
|
||||||
free(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)
|
if(c->mychallenge)
|
||||||
free(c->mychallenge);
|
free(c->mychallenge);
|
||||||
|
|
||||||
if(c->hischallenge)
|
if(c->hischallenge)
|
||||||
free(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);
|
free(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
12
src/tincd.c
12
src/tincd.c
|
@ -510,7 +510,19 @@ end:
|
||||||
remove_pid(pidfilename);
|
remove_pid(pidfilename);
|
||||||
#endif
|
#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();
|
EVP_cleanup();
|
||||||
|
ENGINE_cleanup();
|
||||||
|
CRYPTO_cleanup_all_ex_data();
|
||||||
|
ERR_remove_state(0);
|
||||||
|
ERR_free_strings();
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue