diff options
Diffstat (limited to 'nss')
-rw-r--r-- | nss/digits_dots.c | 20 | ||||
-rw-r--r-- | nss/test-netdb.c | 5 |
2 files changed, 21 insertions, 4 deletions
diff --git a/nss/digits_dots.c b/nss/digits_dots.c index 944b328a1a..9a8d499cbd 100644 --- a/nss/digits_dots.c +++ b/nss/digits_dots.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by H.J. Lu <hjl@gnu.ai.mit.edu>, 1997. @@ -98,13 +98,27 @@ { if (!*cp) { - if (*--cp == '.') break; + int not_ok; + + if (*--cp == '.') + break; /* All-numeric, no dot at the end. Fake up a hostent as if we'd actually done a lookup. What if someone types 255.255.255.255? The test below will succeed spuriously... ??? */ - if (inet_pton (af, name, host_addr) <= 0) + switch (af) + { + case AF_INET: + not_ok = inet_aton (name, (struct in_addr *) host_addr); + break; + case AF_INET6: + not_ok = (inet_pton (af, name, host_addr) <= 0); + break; + default: + assert (! "There should be no other `af' value"); + } + if (not_ok) { __set_h_errno (HOST_NOT_FOUND); #ifndef HAVE_LOOKUP_BUFFER diff --git a/nss/test-netdb.c b/nss/test-netdb.c index 7f1a767b4e..358d072a9c 100644 --- a/nss/test-netdb.c +++ b/nss/test-netdb.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger <aj@arthur.rhein-neckar.de>, 1998. @@ -167,6 +167,9 @@ test_hosts (void) hptr1 = gethostbyname ("127.0.0.1"); output_hostent ("gethostbyname (\"127.0.0.1\")", hptr1); + hptr1 = gethostbyname ("10.1234"); + output_hostent ("gethostbyname (\"10.1234\")", hptr1); + hptr1 = gethostbyname2 ("localhost", AF_INET); output_hostent ("gethostbyname2 (\"localhost\", AF_INET)", hptr1); |