From 99069330a104e6d360635174be5f5ed054c418b8 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sat, 27 Feb 2010 19:38:19 +0100 Subject: [PATCH] *: gethostname-related fixes function old new delta hostname_main 218 231 +13 nfsmount 3541 3474 -67 Signed-off-by: Denys Vlasenko --- libbb/xconnect.c | 22 ---------------------- networking/hostname.c | 10 +++++++--- util-linux/mount.c | 16 ++++++---------- 3 files changed, 13 insertions(+), 35 deletions(-) diff --git a/libbb/xconnect.c b/libbb/xconnect.c index 8a1e1c1b2..97751eb27 100644 --- a/libbb/xconnect.c +++ b/libbb/xconnect.c @@ -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 */ diff --git a/networking/hostname.c b/networking/hostname.c index 579eff795..121ad40bb 100644 --- a/networking/hostname.c +++ b/networking/hostname.c @@ -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 */ diff --git a/util-linux/mount.c b/util-linux/mount.c index 4392363ba..620b14667 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -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)); } }