Fix memory leaks found by Valgrind.
This commit is contained in:
parent
d00d8dbb9b
commit
3df86ef17b
3 changed files with 19 additions and 18 deletions
|
@ -1114,7 +1114,7 @@ void close_network_connections(void) {
|
||||||
if (!device_standby)
|
if (!device_standby)
|
||||||
device_disable();
|
device_disable();
|
||||||
|
|
||||||
if(myport) free(myport);
|
free(myport);
|
||||||
|
|
||||||
if (device_fd >= 0)
|
if (device_fd >= 0)
|
||||||
io_del(&device_io);
|
io_del(&device_io);
|
||||||
|
@ -1124,7 +1124,8 @@ void close_network_connections(void) {
|
||||||
exit_control();
|
exit_control();
|
||||||
|
|
||||||
free(myname);
|
free(myname);
|
||||||
myname = NULL;
|
free(scriptextension);
|
||||||
|
free(scriptinterpreter);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,5 +99,7 @@ void crypto_init(void) {
|
||||||
|
|
||||||
void crypto_exit(void) {
|
void crypto_exit(void) {
|
||||||
EVP_cleanup();
|
EVP_cleanup();
|
||||||
|
ERR_free_strings();
|
||||||
|
ENGINE_cleanup();
|
||||||
random_exit();
|
random_exit();
|
||||||
}
|
}
|
||||||
|
|
30
src/subnet.c
30
src/subnet.c
|
@ -207,21 +207,21 @@ void subnet_update(node_t *owner, subnet_t *subnet, bool up) {
|
||||||
// Prepare environment variables to be passed to the script
|
// Prepare environment variables to be passed to the script
|
||||||
|
|
||||||
char *envp[10] = {NULL};
|
char *envp[10] = {NULL};
|
||||||
xasprintf(&envp[0], "NETNAME=%s", netname ? : "");
|
int n = 0;
|
||||||
xasprintf(&envp[1], "DEVICE=%s", device ? : "");
|
xasprintf(&envp[n++], "NETNAME=%s", netname ? : "");
|
||||||
xasprintf(&envp[2], "INTERFACE=%s", iface ? : "");
|
xasprintf(&envp[n++], "DEVICE=%s", device ? : "");
|
||||||
xasprintf(&envp[3], "NODE=%s", owner->name);
|
xasprintf(&envp[n++], "INTERFACE=%s", iface ? : "");
|
||||||
|
xasprintf(&envp[n++], "NODE=%s", owner->name);
|
||||||
|
|
||||||
if(owner != myself) {
|
if(owner != myself) {
|
||||||
sockaddr2str(&owner->address, &address, &port);
|
sockaddr2str(&owner->address, &address, &port);
|
||||||
// 4 and 5 are reserved for SUBNET and WEIGHT
|
xasprintf(&envp[n++], "REMOTEADDRESS=%s", address);
|
||||||
xasprintf(&envp[6], "REMOTEADDRESS=%s", address);
|
xasprintf(&envp[n++], "REMOTEPORT=%s", port);
|
||||||
xasprintf(&envp[7], "REMOTEPORT=%s", port);
|
|
||||||
free(port);
|
free(port);
|
||||||
free(address);
|
free(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
xasprintf(&envp[8], "NAME=%s", myself->name);
|
xasprintf(&envp[n++], "NAME=%s", myself->name);
|
||||||
|
|
||||||
name = up ? "subnet-up" : "subnet-down";
|
name = up ? "subnet-up" : "subnet-down";
|
||||||
|
|
||||||
|
@ -238,12 +238,10 @@ void subnet_update(node_t *owner, subnet_t *subnet, bool up) {
|
||||||
weight = empty;
|
weight = empty;
|
||||||
|
|
||||||
// Prepare the SUBNET and WEIGHT variables
|
// Prepare the SUBNET and WEIGHT variables
|
||||||
if(envp[4])
|
free(envp[n]);
|
||||||
free(envp[4]);
|
free(envp[n + 1]);
|
||||||
if(envp[5])
|
xasprintf(&envp[n], "SUBNET=%s", netstr);
|
||||||
free(envp[5]);
|
xasprintf(&envp[n + 1], "WEIGHT=%s", weight);
|
||||||
xasprintf(&envp[4], "SUBNET=%s", netstr);
|
|
||||||
xasprintf(&envp[5], "WEIGHT=%s", weight);
|
|
||||||
|
|
||||||
execute_script(name, envp);
|
execute_script(name, envp);
|
||||||
}
|
}
|
||||||
|
@ -257,8 +255,8 @@ void subnet_update(node_t *owner, subnet_t *subnet, bool up) {
|
||||||
weight = empty;
|
weight = empty;
|
||||||
|
|
||||||
// Prepare the SUBNET and WEIGHT variables
|
// Prepare the SUBNET and WEIGHT variables
|
||||||
xasprintf(&envp[4], "SUBNET=%s", netstr);
|
xasprintf(&envp[n], "SUBNET=%s", netstr);
|
||||||
xasprintf(&envp[5], "WEIGHT=%s", weight);
|
xasprintf(&envp[n + 1], "WEIGHT=%s", weight);
|
||||||
|
|
||||||
execute_script(name, envp);
|
execute_script(name, envp);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue