diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | nss/digits_dots.c | 16 |
2 files changed, 13 insertions, 6 deletions
@@ -1,5 +1,8 @@ 2000-08-11 Ulrich Drepper <drepper@redhat.com> + * nss/digits_dots.c: Don't pass NULL in h_aliases for successful + lookup, pass pointer to array with NULL pointer [PR libc/1858]. + * rt/aio_cancel.c: If canceling a specific request which is running *really* do nothing. * rt/aio_misc.h: Add `done' to states of a request. diff --git a/nss/digits_dots.c b/nss/digits_dots.c index c3c6de7ce1..cfca343312 100644 --- a/nss/digits_dots.c +++ b/nss/digits_dots.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by H.J. Lu <hjl@gnu.ai.mit.edu>, 1997. @@ -25,10 +25,11 @@ { const char *cp; char *hostname; - typedef unsigned char host_addr_t [16]; + typedef unsigned char host_addr_t[16]; host_addr_t *host_addr; - typedef char *host_addr_list_t [2]; + typedef char *host_addr_list_t[2]; host_addr_list_t *h_addr_ptrs; + char **h_alias_ptr; size_t size_needed; int addr_size; #ifdef HAVE_TYPE @@ -102,7 +103,8 @@ host_addr = (host_addr_t *) buffer; h_addr_ptrs = (host_addr_list_t *) ((char *) host_addr + sizeof (*host_addr)); - hostname = (char *) h_addr_ptrs + sizeof (*h_addr_ptrs); + h_alias_ptr = (char **) ((char *) h_addr_ptrs + sizeof (*h_addr_ptrs)); + hostname = (char *) h_alias_ptr + sizeof (*h_alias_ptr); if (isdigit (name[0])) { @@ -136,7 +138,8 @@ } resbuf.h_name = strcpy (hostname, name); - resbuf.h_aliases = NULL; + h_alias_ptr[0] = NULL; + resbuf.h_aliases = h_alias_ptr; (*h_addr_ptrs)[0] = (char *)host_addr; (*h_addr_ptrs)[1] = (char *)0; resbuf.h_addr_list = *h_addr_ptrs; @@ -297,7 +300,8 @@ } resbuf.h_name = strcpy (hostname, name); - resbuf.h_aliases = NULL; + h_alias_ptr[0] = NULL; + resbuf.h_aliases = h_alias_ptr; (*h_addr_ptrs)[0] = (char *) host_addr; (*h_addr_ptrs)[1] = (char *) 0; resbuf.h_addr_list = *h_addr_ptrs; |