}
-/* "Old" networking API - only IPv4 */
-
-/*
-void FAST_FUNC bb_lookup_host(struct sockaddr_in *s_in, const char *host)
-{
- struct hostent *he;
-
- memset(s_in, 0, sizeof(struct sockaddr_in));
- s_in->sin_family = AF_INET;
- he = xgethostbyname(host);
- memcpy(&(s_in->sin_addr), he->h_addr_list[0], he->h_length);
-}
-
-
-int FAST_FUNC xconnect_tcp_v4(struct sockaddr_in *s_addr)
-{
- int s = xsocket(AF_INET, SOCK_STREAM, 0);
- xconnect(s, (struct sockaddr*) s_addr, sizeof(*s_addr));
- return s;
-}
-*/
-
/* "New" networking API */
if (*p)
puts(p + 1);
} else /*if (opts & OPT_i)*/ {
- while (hp->h_addr_list[0]) {
- printf("%s ", inet_ntoa(*(struct in_addr *) (*hp->h_addr_list++)));
+ if (hp->h_length == sizeof(struct in_addr)) {
+ struct in_addr **h_addr_list = (struct in_addr **)hp->h_addr_list;
+ while (*h_addr_list) {
+ printf("%s ", inet_ntoa(**h_addr_list));
+ h_addr_list++;
+ }
+ bb_putchar('\n');
}
- bb_putchar('\n');
}
} else if (opts & OPT_F) {
/* Set the hostname */
bb_herror_msg("%s", hostname);
goto fail;
}
- if ((size_t)hp->h_length > sizeof(struct in_addr)) {
- bb_error_msg("got bad hp->h_length");
- hp->h_length = sizeof(struct in_addr);
+ if (hp->h_length != (int)sizeof(struct in_addr)) {
+ bb_error_msg_and_die("only IPv4 is supported");
}
- memcpy(&server_addr.sin_addr,
- hp->h_addr, hp->h_length);
+ memcpy(&server_addr.sin_addr, hp->h_addr_list[0], sizeof(struct in_addr));
}
memcpy(&mount_server_addr, &server_addr, sizeof(mount_server_addr));
bb_herror_msg("%s", mounthost);
goto fail;
}
- if ((size_t)hp->h_length > sizeof(struct in_addr)) {
- bb_error_msg("got bad hp->h_length");
- hp->h_length = sizeof(struct in_addr);
+ if (hp->h_length != (int)sizeof(struct in_addr)) {
+ bb_error_msg_and_die("only IPv4 is supported");
}
mount_server_addr.sin_family = AF_INET;
- memcpy(&mount_server_addr.sin_addr,
- hp->h_addr, hp->h_length);
+ memcpy(&mount_server_addr.sin_addr, hp->h_addr_list[0], sizeof(struct in_addr));
}
}