Start new session for nscd, drop privilegs to configured user if requested
[kopensolaris-gnu/glibc.git] / nscd / nscd_gethst_r.c
index 6ee0826..cf6a569 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -67,7 +67,7 @@ __nscd_gethostbyname2_r (const char *name, int af, struct hostent *resultbuf,
 
 
 int
-__nscd_gethostbyaddr_r (const char *addr, int len, int type,
+__nscd_gethostbyaddr_r (const void *addr, socklen_t len, int type,
                        struct hostent *resultbuf, char *buffer, size_t buflen,
                        int *h_errnop)
 {
@@ -174,7 +174,7 @@ nscd_gethst_r (const char *key, size_t keylen, request_type type,
       char *ignore;
       int n;
 
-      /* A first check whether the buffer is sufficently large is possible.  */
+      /* A first check whether the buffer is sufficiently large is possible.  */
       /* Now allocate the buffer the array for the group members.  We must
         align the pointer and the base of the h_addr_list pointers.  */
       align1 = ((__alignof__ (char *) - (cp - ((char *) 0)))
@@ -182,7 +182,7 @@ nscd_gethst_r (const char *key, size_t keylen, request_type type,
       align2 = ((__alignof__ (char *) - ((cp + align1 + hst_resp.h_name_len)
                                         - ((char *) 0)))
                & (__alignof__ (char *) - 1));
-      if (buflen < (align1 + hst_resp.h_name_len + align2 +
+      if (buflen < (align1 + hst_resp.h_name_len + align2
                    + ((hst_resp.h_aliases_cnt + hst_resp.h_addr_list_cnt + 2)
                       * sizeof (char *))
                    + hst_resp.h_addr_list_cnt * (type == AF_INET
@@ -214,12 +214,6 @@ nscd_gethst_r (const char *key, size_t keylen, request_type type,
                   + hst_resp.h_aliases_cnt * sizeof (size_t));
 
       n = 2;
-
-      /* These things must be aligned or ntohl will cause havoc.  */
-      align = ((__alignof__ (char *) - (cp - ((char *) 0)))
-              & (__alignof__ (char *) - 1));
-      cp += align;
-
       if (type == GETHOSTBYADDR || type == GETHOSTBYNAME)
        {
          vec[2].iov_base = cp;