X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=unix%2Fuxnet.c;h=e1dfce327f5f2e8c087895a771b0456b66f85ccb;hb=90e7bf4228fa74fda1c65cb2597c9d964329f702;hp=3cf1b5f0fde4db4cfb4bc20cabcb2fc048c99ad7;hpb=4598889284ede3081e66fdc50a4ba9fe70030fb0;p=PuTTY.git diff --git a/unix/uxnet.c b/unix/uxnet.c index 3cf1b5f0..e1dfce32 100644 --- a/unix/uxnet.c +++ b/unix/uxnet.c @@ -236,7 +236,7 @@ SockAddr sk_nonamelookup(const char *host) static int sk_nextaddr(SockAddr addr) { #ifndef NO_IPV6 - if (addr->ai->ai_next) { + if (addr->ai && addr->ai->ai_next) { addr->ai = addr->ai->ai_next; addr->family = addr->ai->ai_family; return TRUE; @@ -470,6 +470,8 @@ static int try_connect(Actual_Socket sock) goto ret; } + cloexec(s); + if (sock->oobinline) { int b = TRUE; setsockopt(s, SOL_SOCKET, SO_OOBINLINE, (void *) &b, sizeof(b)); @@ -723,6 +725,8 @@ Socket sk_newlistener(char *srcaddr, int port, Plug plug, int local_host_only, i return (Socket) ret; } + cloexec(s); + ret->oobinline = 0; setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char *)&on, sizeof(on)); @@ -1282,9 +1286,10 @@ SockAddr platform_get_x11_unix_address(int displaynum, char **canonicalname) else *canonicalname = dupstr(ret->hostname); #ifndef NO_IPV6 - ret->ais = NULL; + ret->ai = ret->ais = NULL; #else ret->addresses = NULL; + ret->curraddr = ret->naddresses = 0; #endif return ret; }