*: gethostname-related fixes
No binary (build failed)
—
(log yok)
| @@ -96,28 +96,6 @@ unsigned FAST_FUNC bb_lookup_port(const char *port, const char *protocol, unsign | |
| } | |
| - | /* "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 */ | |
| @@ -132,10 +132,14 @@ int hostname_main(int argc UNUSED_PARAM, char **argv) | |
| 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 */ | |
| @@ -1043,12 +1043,10 @@ static NOINLINE int nfsmount(struct mntent *mp, long vfsflags, char *filteropts) | |
| 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)); | |
| @@ -1331,13 +1329,11 @@ static NOINLINE int nfsmount(struct mntent *mp, long vfsflags, char *filteropts) | |
| 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)); |
| } | |
| } | |