Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 30 Jun 1999 17:41:35 +0000 (17:41 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 30 Jun 1999 17:41:35 +0000 (17:41 +0000)
1999-06-30  Ulrich Drepper  <drepper@cygnus.com>

* sysdeps/unix/sysv/linux/gethostid.c: Handle failing call to
getxxbyYY_r functions correctly for non-existing entry.
* sunrpc/getrpcport.c: Likewise.
* sunrpc/clnt_simp.c: Likewise.
* inet/rexec.c: Likewise.
* sunrpc/clnt_gen.c: Likewise.
* inet/rcmd.c: Likewise.
* sysdeps/generic/glob.c: Likewise.

ChangeLog
inet/rcmd.c
inet/rexec.c
pwd/pwd.h
sunrpc/clnt_gen.c
sunrpc/clnt_simp.c
sunrpc/getrpcport.c
sysdeps/generic/glob.c
sysdeps/unix/sysv/linux/gethostid.c

index 8aaf8932a8ee833f4802f9814d2b0979c2a91dc0..49c5c4b26432ebef9eed84e6f1c0c8a295da44d0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+1999-06-30  Ulrich Drepper  <drepper@cygnus.com>
+
+       * sysdeps/unix/sysv/linux/gethostid.c: Handle failing call to
+       getxxbyYY_r functions correctly for non-existing entry.
+       * sunrpc/getrpcport.c: Likewise.
+       * sunrpc/clnt_simp.c: Likewise.
+       * inet/rexec.c: Likewise.
+       * sunrpc/clnt_gen.c: Likewise.
+       * inet/rcmd.c: Likewise.
+       * sysdeps/generic/glob.c: Likewise.
+
 1999-06-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
 
        * pwd/Makefile (tests): Add rules for tst-getpw.
index 923f21fe409b8be46bbd2cc941a8ca65e8f84260..30f20d1922bdbda36c1376550accc3191cb64b46 100644 (file)
@@ -80,7 +80,8 @@ rcmd(ahost, rport, locuser, remuser, cmd, fd2p)
        hstbuflen = 1024;
        tmphstbuf = __alloca (hstbuflen);
        while (__gethostbyname_r (*ahost, &hostbuf, tmphstbuf, hstbuflen,
-                                 &hp, &herr) != 0)
+                                 &hp, &herr) != 0
+              || hp == NULL)
          if (herr != NETDB_INTERNAL || errno != ERANGE)
            {
              __set_h_errno (herr);
@@ -270,7 +271,8 @@ ruserok(rhost, superuser, ruser, luser)
        buffer = __alloca (buflen);
 
        while (__gethostbyname_r (rhost, &hostbuf, buffer, buflen, &hp, &herr)
-              != 0)
+              != 0
+              || hp == NULL)
          if (herr != NETDB_INTERNAL || errno != ERANGE)
            return -1;
          else
@@ -370,7 +372,8 @@ iruserok2 (raddr, superuser, ruser, luser, rhost)
       char *buffer = __alloca (buflen);
       uid_t uid;
 
-      if (__getpwnam_r (luser, &pwdbuf, buffer, buflen, &pwd))
+      if (__getpwnam_r (luser, &pwdbuf, buffer, buflen, &pwd) != 0
+         || pwd == NULL)
        return -1;
 
       dirlen = strlen (pwd->pw_dir);
@@ -469,7 +472,8 @@ __icheckhost (raddr, lhost, rhost)
        buffer = __alloca (buflen);
        save_errno = errno;
        while (__gethostbyname_r (lhost, &hostbuf, buffer, buflen, &hp, &herr)
-              != 0)
+              != 0
+              || hp = NULL)
                if (herr != NETDB_INTERNAL || errno != ERANGE)
                        return (0);
                else {
index 6ba7d20f713b6a2512573ec35b7b18a6ad2576cd..897030e6b98bb3e8cce9bc7da99746af66c05a1b 100644 (file)
@@ -64,7 +64,8 @@ rexec(ahost, rport, name, pass, cmd, fd2p)
        hstbuflen = 1024;
        hsttmpbuf = __alloca (hstbuflen);
        while (__gethostbyname_r (*ahost, &hostbuf, hsttmpbuf, hstbuflen,
-                                 &hp, &herr) != 0)
+                                 &hp, &herr) != 0
+              || hp == NULL)
          if (herr != NETDB_INTERNAL || errno != ERANGE)
            {
              __set_h_errno (herr);
index 50d62a170807a4665192ac7d5e0027bb56c17a1a..a528a5194861f0cb4de0f5cd2b063574d455f0ab 100644 (file)
--- a/pwd/pwd.h
+++ b/pwd/pwd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 95, 96, 97, 98 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -135,6 +135,12 @@ extern int fgetpwent_r __P ((FILE *__restrict __stream,
 
 #endif /* POSIX or reentrant */
 
+#ifdef __USE_GNU
+/* Re-construct the password-file line for the given uid
+   in the given buffer.  This knows the format that the caller
+   will expect, but this need not be the format of the password file.  */
+extern int getpw __P ((__uid_t __uid, char *__buffer));
+#endif
 
 __END_DECLS
 
index e8656eefc73175c9fb2d9bbc3160ccf51fc8d43e..0f388572d433b7cdad4f88e9c3e5a66bafd66a0f 100644 (file)
@@ -78,7 +78,8 @@ clnt_create (const char *hostname, u_long prog, u_long vers,
   hstbuflen = 1024;
   hsttmpbuf = __alloca (hstbuflen);
   while (__gethostbyname_r (hostname, &hostbuf, hsttmpbuf, hstbuflen,
-                           &h, &herr) != 0)
+                           &h, &herr) != 0
+        || h == NULL)
     if (herr != NETDB_INTERNAL || errno != ERANGE)
       {
        rpc_createerr.cf_stat = RPC_UNKNOWNHOST;
@@ -107,7 +108,8 @@ clnt_create (const char *hostname, u_long prog, u_long vers,
 
   prtbuflen = 1024;
   prttmpbuf = __alloca (prtbuflen);
-  while (__getprotobyname_r (proto, &protobuf, prttmpbuf, prtbuflen, &p) != 0)
+  while (__getprotobyname_r (proto, &protobuf, prttmpbuf, prtbuflen, &p) != 0
+        || p == NULL)
     if (errno != ERANGE)
       {
        rpc_createerr.cf_stat = RPC_UNKNOWNPROTO;
index 41d106e570a7da11e355b26d5a4a77e1da3b2618..e1e7e2ab73473b8eff8611a2f6d639fc8a9610f9 100644 (file)
@@ -105,7 +105,8 @@ callrpc (const char *host, u_long prognum, u_long versnum, u_long procnum,
       buflen = 1024;
       buffer = __alloca (buflen);
       while (__gethostbyname_r (host, &hostbuf, buffer, buflen,
-                               &hp, &herr) != 0)
+                               &hp, &herr) != 0
+            || hp == NULL)
        if (herr != NETDB_INTERNAL || errno != ERANGE)
          return (int) RPC_UNKNOWNHOST;
        else
index 188c668c1d9f68158f9e36270d18a0a589aa710c..2e12482abc5f67794728653fa2c0e97c6f1e5d9d 100644 (file)
@@ -56,7 +56,8 @@ getrpcport (const char *host, u_long prognum, u_long versnum, u_int proto)
 
   buflen = 1024;
   buffer = __alloca (buflen);
-  while (__gethostbyname_r (host, &hostbuf, buffer, buflen, &hp, &herr) != 0)
+  while (__gethostbyname_r (host, &hostbuf, buffer, buflen, &hp, &herr) != 0
+        || hp == NULL)
     if (herr != NETDB_INTERNAL || errno != ERANGE)
       return 0;
     else
index b48dd7c84a7e3c48b6bfba2a20e1db8bc0bfb3aa..9b134c5a0dddd1c7f70a5cfd5f21b8667d2780fa 100644 (file)
@@ -650,13 +650,12 @@ glob (pattern, flags, errfunc, pglob)
                    pwbuflen = 1024;
                  pwtmpbuf = (char *) __alloca (pwbuflen);
 
-                 success = 1;
                  while (getpwnam_r (name, &pwbuf, pwtmpbuf, pwbuflen, &p)
                         != 0)
                    {
                      if (errno != ERANGE)
                        {
-                         success = 0;
+                         p = NULL;
                          break;
                        }
                      pwbuflen *= 2;
@@ -665,9 +664,8 @@ glob (pattern, flags, errfunc, pglob)
                    }
 #   else
                  p = getpwnam (name);
-                 success = p != NULL;
 #   endif
-                 if (success)
+                 if (p != NULL)
                    home_dir = p->pw_dir;
                }
            }
index f2ebbf2b6ad807ac11c5c7b43a757649825ded5a..6f501e391dd5d1b8c21299df62d910bc5042dac0 100644 (file)
@@ -91,7 +91,8 @@ gethostid ()
 
   /* To get the IP address we need to know the host name.  */
   while (__gethostbyname_r (hostname, &hostbuf, buffer, buflen, &hp, &herr)
-        != 0)
+        != 0
+        || hp == NULL)
     if (herr != NETDB_INTERNAL || errno != ERANGE)
       return 0;
     else