X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fnetutl.c;h=c12ed93cc9eb159654709e51ad9932aecda8c3dd;hp=1ab4c2cb8e9ce727c2daf325dbcf9ff6b65548bc;hb=22dd23b650eb9b760bc68ab3a9227caf3b449140;hpb=570e7e9c615388cfba263c7a7c66cbc3d092d6e7 diff --git a/src/netutl.c b/src/netutl.c index 1ab4c2cb..c12ed93c 100644 --- a/src/netutl.c +++ b/src/netutl.c @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: netutl.c,v 1.12.4.53 2003/08/22 11:18:42 guus Exp $ + $Id: netutl.c,v 1.12.4.54 2003/08/22 15:03:59 guus Exp $ */ #include "system.h" @@ -193,6 +193,8 @@ int sockaddrcmp(const sockaddr_t *a, const sockaddr_t *b) } void sockaddrcpy(sockaddr_t *a, const sockaddr_t *b) { + cp(); + if(b->sa.sa_family != AF_UNKNOWN) { *a = *b; } else { @@ -203,6 +205,8 @@ void sockaddrcpy(sockaddr_t *a, const sockaddr_t *b) { } void sockaddrfree(sockaddr_t *a) { + cp(); + if(a->sa.sa_family == AF_UNKNOWN) { free(a->unknown.address); free(a->unknown.port); @@ -211,6 +215,8 @@ void sockaddrfree(sockaddr_t *a) { void sockaddrunmap(sockaddr_t *sa) { + cp(); + if(sa->sa.sa_family == AF_INET6 && IN6_IS_ADDR_V4MAPPED(&sa->in6.sin6_addr)) { sa->in.sin_addr.s_addr = ((uint32_t *) & sa->in6.sin6_addr)[3]; sa->in.sin_family = AF_INET;