$NetBSD: patch-ab,v 1.2 2009/09/14 16:48:44 tron Exp $ --- src/ne_socket.c.orig 2009-08-18 14:16:07.000000000 +0100 +++ src/ne_socket.c 2009-09-14 13:40:37.000000000 +0100 @@ -1192,6 +1192,9 @@ in6.sin6_port = htons(port); /* fill in the _family field for AIX 4.3, which forgets to do so. */ in6.sin6_family = AF_INET6; +#ifdef __NetBSD__ + in6.sin6_len = sizeof in6; +#endif return bind(fd, (struct sockaddr *)&in6, sizeof in6); } else @@ -1210,6 +1213,9 @@ } in.sin_port = htons(port); in.sin_family = AF_INET; +#ifdef __NetBSD__ + in.sin_len = sizeof in; +#endif return bind(fd, (struct sockaddr *)&in, sizeof in); } @@ -1329,7 +1335,7 @@ ia = ne_calloc(sizeof *ia); #ifdef USE_GETADDRINFO - ia->ai_addr = ne_malloc(sizeof *ia); + ia->ai_addr = ne_malloc(len); ia->ai_addrlen = len; memcpy(ia->ai_addr, sad, len); ia->ai_family = saun.sa.sa_family; @@ -1365,6 +1371,9 @@ ia->ai_addr = (struct sockaddr *)in4; ia->ai_addrlen = sizeof *in4; in4->sin_family = AF_INET; +#ifdef __NetBSD__ + in4->sin_len = sizeof *in4; +#endif memcpy(&in4->sin_addr.s_addr, raw, sizeof in4->sin_addr.s_addr); } #ifdef AF_INET6 @@ -1374,6 +1383,9 @@ ia->ai_addr = (struct sockaddr *)in6; ia->ai_addrlen = sizeof *in6; in6->sin6_family = AF_INET6; +#ifdef __NetBSD__ + in6->sin6_len = sizeof *in6; +#endif memcpy(&in6->sin6_addr, raw, sizeof in6->sin6_addr.s6_addr); } #endif