summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--docs/ipv4_ipv6.txt3
-rw-r--r--networking/nc.c2
-rw-r--r--networking/nslookup.c5
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 {