summaryrefslogtreecommitdiff
path: root/libc/inet/resolv.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/inet/resolv.c')
-rw-r--r--libc/inet/resolv.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c
index 25dc62dd3..eb663ac0f 100644
--- a/libc/inet/resolv.c
+++ b/libc/inet/resolv.c
@@ -337,6 +337,8 @@ Domain name in a message can be represented as either:
#define MAX_RECURSE 5
#define MAXALIASES (4)
+/* 1:ip + 1:full + MAX_ALIASES:aliases + 1:NULL */
+#define ALIAS_DIM (2 + MAXALIASES + 1)
#define BUFSZ (80) /* one line */
#define NS_TYPE_ELT 0x40 /*%< EDNS0 extended label type */
@@ -1650,9 +1652,8 @@ int __read_etc_hosts_r(
result_buf->h_aliases = tok+1;
if (action == GETHOSTENT) {
/* Return whatever the next entry happens to be. */
- break;
- }
- if (action == GET_HOSTS_BYADDR) {
+ ;
+ } else if (action == GET_HOSTS_BYADDR) {
if (strcmp(name, *tok) != 0)
continue;
} else { /* GET_HOSTS_BYNAME */
@@ -2623,13 +2624,13 @@ struct hostent *gethostent(void)
{
static struct hostent hoste;
static char *buf = NULL;
- struct hostent *host;
+ struct hostent *host = NULL;
#ifndef __UCLIBC_HAS_IPV6__
#define HOSTENT_BUFSZ (sizeof(struct in_addr) + sizeof(struct in_addr *) * 2 + \
- BUFSZ /*namebuffer*/ + 2 /* margin */)
+ sizeof(char *)*ALIAS_DIM + BUFSZ /*namebuffer*/ + 2 /* margin */)
#else
#define HOSTENT_BUFSZ (sizeof(struct in6_addr) + sizeof(struct in6_addr *) * 2 + \
- BUFSZ /*namebuffer*/ + 2 /* margin */)
+ sizeof(char *)*ALIAS_DIM + BUFSZ /*namebuffer*/ + 2 /* margin */)
#endif /* __UCLIBC_HAS_IPV6__ */
__INIT_GETXX_BUF(HOSTENT_BUFSZ);