X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fsubnet.c;h=d07e340535690f8d5f71a7bedaa79062d75b05bf;hp=984cc7f8ece644ff2f2ec80cd6054366efe3fba1;hb=e810545dc2ae158745624c1575b76c55f883c892;hpb=c46f56a8b8bb865dd8951441b5acf4701b5b5b09 diff --git a/src/subnet.c b/src/subnet.c index 984cc7f8..d07e3405 100644 --- a/src/subnet.c +++ b/src/subnet.c @@ -1,7 +1,7 @@ /* subnet.c -- handle subnet lookups and lists - Copyright (C) 2000-2004 Guus Sliepen , - 2000-2004 Ivo Timmermans + Copyright (C) 2000-2005 Guus Sliepen , + 2000-2005 Ivo Timmermans This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -247,6 +247,11 @@ bool net2str(char *netstr, int len, const subnet_t *subnet) { cp(); + if(!netstr || !subnet) { + logger(LOG_ERR, _("net2str() was called with netstr=%p, subnet=%p!\n"), netstr, subnet); + return false; + } + switch (subnet->type) { case SUBNET_MAC: snprintf(netstr, len, "%hx:%hx:%hx:%hx:%hx:%hx", @@ -398,6 +403,7 @@ void subnet_update(node_t *owner, subnet_t *subnet, bool up) { asprintf(&envp[1], "DEVICE=%s", device ? : ""); asprintf(&envp[2], "INTERFACE=%s", iface ? : ""); asprintf(&envp[3], "NODE=%s", owner->name); + if(owner != myself) { sockaddr2str(&owner->address, &address, &port); asprintf(&envp[4], "REMOTEADDRESS=%s", address); @@ -423,14 +429,13 @@ void subnet_update(node_t *owner, subnet_t *subnet, bool up) { execute_script(name, envp); } - net2str(netstr, sizeof netstr, subnet); - envp[6] = envp[7] = NULL; - for(i = 0; i < (owner != myself ? 6 : 4); i++) free(envp[i]); - free(address); - free(port); + if(owner != myself) { + free(address); + free(port); + } } void dump_subnets(void)