diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-04-29 12:18:08 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-04-29 12:18:08 +0000 |
commit | 16b0f634a020651c15a7e7fec08e57b9d31783fe (patch) | |
tree | ffbf68d0476e37a2a8ddbf26630c13e2993bf351 /nss | |
parent | 2c68584cdd5fdd2ff82292a47410a8602c7c35b5 (diff) | |
download | glibc-16b0f634a020651c15a7e7fec08e57b9d31783fe.zip glibc-16b0f634a020651c15a7e7fec08e57b9d31783fe.tar.gz glibc-16b0f634a020651c15a7e7fec08e57b9d31783fe.tar.bz2 |
Update.
1999-04-28 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nss/digits_dots.c: Use inet_aton to parse IPv4 numbers.
This allows e.g. gethostbyname to accept "10.1234".
Reported by Alexander V. Lukyanov <lav@long.yar.ru> [PR libc/1096].
* nss/test-netdb.c (test_hosts): Add test for gethostbyname and
non quad IPv4 numbers.
loaded shared object with all loaded objects. Initialize l_ino
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 944b328..9a8d499 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 7f1a767..358d072 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); |