diff options
-rw-r--r-- | docs/ipv4_ipv6.txt | 3 | ||||
-rw-r--r-- | networking/nc.c | 2 | ||||
-rw-r--r-- | networking/nslookup.c | 5 |
3 files changed, 6 insertions, 4 deletions
diff --git a/docs/ipv4_ipv6.txt b/docs/ipv4_ipv6.txt index 5a63aa776..76d8279c1 100644 --- a/docs/ipv4_ipv6.txt +++ b/docs/ipv4_ipv6.txt @@ -212,7 +212,8 @@ structure the code differently. Here's the corresponding server C code for a dual-stack platform: int ServSock, csock; - struct sockaddr addr, from; + /* struct sockaddr is too small! */ + struct sockaddr_storage addr, from; ... ServSock = socket(AF_INET6, SOCK_STREAM, PF_INET6); bind(ServSock, &addr, sizeof(addr)); diff --git a/networking/nc.c b/networking/nc.c index a940d8a5d..2f8a36bee 100644 --- a/networking/nc.c +++ b/networking/nc.c @@ -25,7 +25,6 @@ int nc_main(int argc, char **argv) SKIP_NC_EXTRA (const int execparam = 0;) USE_NC_EXTRA (char **execparam = NULL;) struct sockaddr_in address; - struct hostent *hostinfo; fd_set readfds, testfds; int opt; /* must be signed (getopt returns -1) */ @@ -116,6 +115,7 @@ int nc_main(int argc, char **argv) if (!execparam) close(sfd); } else { + struct hostent *hostinfo; hostinfo = xgethostbyname(argv[0]); address.sin_addr = *(struct in_addr *) *hostinfo->h_addr_list; diff --git a/networking/nslookup.c b/networking/nslookup.c index dd49e2669..89a2d6481 100644 --- a/networking/nslookup.c +++ b/networking/nslookup.c @@ -82,9 +82,10 @@ static int print_host(const char *hostname, const char *header) while (cur) { sockaddr_to_dotted(cur->ai_addr, str, sizeof(str)); printf("%s %s\nAddress: %s", header, hostname, str); - if (getnameinfo(cur->ai_addr, cur->ai_addrlen, str, sizeof(str), NULL, 0, NI_NAMEREQD)) + s[0] = ' '; + if (getnameinfo(cur->ai_addr, cur->ai_addrlen, str+1, sizeof(str)-1, NULL, 0, NI_NAMEREQD)) str[0] = '\0'; - printf(" %s\n", str); + puts(str); cur = cur->ai_next; } } else { |