X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/f85e6f6edb2c9415bc10bd2015479d72ea8c5ae2..f4ff9455ce1b9e6ccc9c580966c3a2a002bc20d1:/unix/uxnet.c?ds=sidebyside diff --git a/unix/uxnet.c b/unix/uxnet.c index ce062d8a..46b619bd 100644 --- a/unix/uxnet.c +++ b/unix/uxnet.c @@ -434,6 +434,11 @@ Socket sk_new(SockAddr addr, int port, int privport, int oobinline, else localport = 0; /* just use port 0 (ie kernel picks) */ + /* BSD IP stacks need sockaddr_in zeroed before filling in */ + memset(&a,'\0',sizeof(struct sockaddr_in)); +#ifdef IPV6 + memset(&a6,'\0',sizeof(struct sockaddr_in6)); +#endif /* Loop round trying to bind */ while (1) { int retcode; @@ -574,7 +579,12 @@ Socket sk_newlistener(char *srcaddr, int port, Plug plug, int local_host_only) setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char *)&on, sizeof(on)); + /* BSD IP stacks need sockaddr_in zeroed before filling in */ + memset(&a,'\0',sizeof(struct sockaddr_in)); #ifdef IPV6 +#if 0 + memset(&a6,'\0',sizeof(struct sockaddr_in6)); +#endif hints.ai_flags = AI_NUMERICHOST; hints.ai_family = AF_UNSPEC; hints.ai_socktype = 0; @@ -871,7 +881,7 @@ static int net_select_result(int fd, int event) memset(&isa, 0, sizeof(struct sockaddr_in)); err = 0; - t = accept(s->s,(struct sockaddr *)&isa,&addrlen); + t = accept(s->s,(struct sockaddr *)&isa,(socklen_t *) &addrlen); if (t < 0) { break; }