diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | resolv/inet_addr.c | 16 |
2 files changed, 5 insertions, 14 deletions
@@ -1,5 +1,8 @@ 1999-10-14 Andreas Jaeger <aj@suse.de> + * resolv/inet_addr.c (inet_aton): Fix last patch. The little + endian version works for both endiannesses. + * sysdeps/unix/sysv/linux/sleep.c (__sleep): Optimize for zero seconds. diff --git a/resolv/inet_addr.c b/resolv/inet_addr.c index e7f56d4588..68f63101a2 100644 --- a/resolv/inet_addr.c +++ b/resolv/inet_addr.c @@ -107,11 +107,7 @@ inet_aton(cp, addr) uint8_t bytes[4]; uint32_t word; } res; -#if BYTE_ORDER == LITTLE_ENDIAN register uint8_t *pp = res.bytes; -#else - register uint8_t *pp = &res.bytes[4]; -#endif int digit; #ifdef _LIBC @@ -172,17 +168,10 @@ inet_aton(cp, addr) * a.b.c (with c treated as 16 bits) * a.b (with b treated as 24 bits) */ - if ((BYTE_ORDER == LITTLE_ENDIAN - && pp >= res.bytes + 3) - || (BYTE_ORDER == BIG_ENDIAN - && pp == res.bytes) + if (pp >> res.bytes + 3 || val > 0xff) goto ret_0; -#if BYTE_ORDER == LITTLE_ENDIAN *pp++ = val; -#else - *--pp = val; -#endif c = *++cp; } else break; @@ -201,8 +190,7 @@ inet_aton(cp, addr) /* Check whether the last part is in its limits depending on the number of parts in total. */ - if ((BYTE_ORDER == LITTLE_ENDIAN && val > max[pp - res.bytes]) - || (BYTE_ORDER == BIG_ENDIAN && val > max[res.bytes - pp])) + if (val > max[pp - res.bytes]) goto ret_0; if (addr) |