]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Make sure errno is always set correct.
authorUlrich Drepper <drepper@redhat.com>
Sun, 19 Dec 1999 00:15:18 +0000 (00:15 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sun, 19 Dec 1999 00:15:18 +0000 (00:15 +0000)
nis/nss_compat/compat-grp.c
nis/nss_compat/compat-initgroups.c
nis/nss_compat/compat-spwd.c
nis/nss_nis/nis-alias.c
nis/nss_nis/nis-ethers.c
nis/nss_nis/nis-grp.c
nis/nss_nis/nis-hosts.c
nis/nss_nis/nis-netgrp.c
nis/nss_nis/nis-publickey.c

index ac56f6fbec6822f0d4d0276e573dec9b229e978c..2de46088df9f82e2edf25f49e287f9b44c84c335 100644 (file)
@@ -1,6 +1,6 @@
 /* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
+   Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public License as
@@ -730,7 +730,10 @@ _nss_compat_getgrnam_r (const char *name, struct group *grp,
   enum nss_status status;
 
   if (name[0] == '-' || name[0] == '+')
-    return NSS_STATUS_NOTFOUND;
+    {
+      *errnop = ENOENT;
+      return NSS_STATUS_NOTFOUND;
+    }
 
   __libc_lock_lock (lock);
 
@@ -915,7 +918,10 @@ internal_getgrgid_r (gid_t gid, struct group *result, ent_t *ent,
 
          status = getgrgid_plusgroup (gid, result, buffer, buflen, errnop);
          if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
-           return NSS_STATUS_NOTFOUND;
+           {
+             *errnop = ENOENT;
+             return NSS_STATUS_NOTFOUND;
+           }
          else
            return status;
        }
index 47b395ede6c4b9c133037eb2d71a77d362b5f598..3f7793d8b70418499a3aa72ba3975672f2083b8f 100644 (file)
@@ -126,7 +126,7 @@ _nss_first_init (void)
 
       grptable = malloc (sizeof (key) + len_local_dir);
       if (grptable == NULL)
-        return NSS_STATUS_TRYAGAIN;
+       return NSS_STATUS_TRYAGAIN;
 
       grptablelen = ((char *) mempcpy (mempcpy (grptable,
                                                key, sizeof (key) - 1),
@@ -263,6 +263,7 @@ getgrent_next_nis (struct group *result, ent_t *ent, char *buffer,
   if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
     {
       ent->nis = 0;
+      *errnop = ENOENT;
       return NSS_STATUS_NOTFOUND;
     }
 
@@ -445,7 +446,10 @@ getgrnam_plusgroup (const char *name, struct group *result, char *buffer,
         ++p;
       parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop);
       if (parse_res == -1)
-       return NSS_STATUS_TRYAGAIN;
+       {
+         *errnop = ERANGE;
+         return NSS_STATUS_TRYAGAIN;
+       }
     }
 
   if (parse_res)
index 1290346881404095a013b8b35428591c4aad0b56..f254fadf5c80947e1cc199c4684972ab07acf995 100644 (file)
@@ -383,6 +383,7 @@ getspent_next_nis_netgr (const char *name, struct spwd *result, ent_t *ent,
       if (parse_res == -1)
        {
          ent->netgrdata.cursor = saved_cursor;
+         *errnop = ERANGE;
          return NSS_STATUS_TRYAGAIN;
        }
 
@@ -1112,7 +1113,10 @@ internal_getspnam_r (const char *name, struct spwd *result, ent_t *ent,
          && result->sp_namp[1] != '@')
        {
          if (strcmp (&result->sp_namp[1], name) == 0)
-           return NSS_STATUS_NOTFOUND;
+           {
+             *errnop = ENOENT;
+             return NSS_STATUS_NOTFOUND;
+           }
          else
            continue;
        }
@@ -1128,8 +1132,11 @@ internal_getspnam_r (const char *name, struct spwd *result, ent_t *ent,
              status = getspnam_plususer (name, result, buffer, buflen,
                                          errnop);
              if (status == NSS_STATUS_RETURN)
-               /* We couldn't parse the entry */
-               return NSS_STATUS_NOTFOUND;
+               {
+                 /* We couldn't parse the entry */
+                 *errnop = ENOENT;
+                 return NSS_STATUS_NOTFOUND;
+               }
              else
                return status;
            }
@@ -1142,7 +1149,10 @@ internal_getspnam_r (const char *name, struct spwd *result, ent_t *ent,
 
          status = getspnam_plususer (name, result, buffer, buflen, errnop);
          if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
-           return NSS_STATUS_NOTFOUND;
+           {
+             *errnop = ENOENT;
+             return NSS_STATUS_NOTFOUND;
+           }
          else
            return status;
        }
@@ -1159,7 +1169,10 @@ _nss_compat_getspnam_r (const char *name, struct spwd *pwd,
   enum nss_status status;
 
   if (name[0] == '-' || name[0] == '+')
-    return NSS_STATUS_NOTFOUND;
+    {
+      *errnop = ENOENT;
+      return NSS_STATUS_NOTFOUND;
+    }
 
   if (ni == NULL)
     {
index 64d0bf8de536cee1a5f9deeece37f148c9a7f76b..e6e23865478e36ff5049bf05a2a1b705a3c9dceb 100644 (file)
@@ -278,7 +278,10 @@ _nss_nis_getaliasbyname_r (const char *name, struct aliasent *alias,
       if (parse_res == -1)
        return NSS_STATUS_TRYAGAIN;
       else
-       return NSS_STATUS_NOTFOUND;
+       {
+         *errnop = ENOENT;
+         return NSS_STATUS_NOTFOUND;
+       }
     }
 
   return NSS_STATUS_SUCCESS;
index c95f766469e354a173ef9b80072a10e51c143abe..c1ea32adc5a0d36630396d067b720c2bc5ada51e 100644 (file)
@@ -1,6 +1,6 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
+   Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public License as
@@ -241,7 +241,10 @@ _nss_nis_gethostton_r (const char *name, struct ether *eth,
       if (parse_res == -1)
        return NSS_STATUS_TRYAGAIN;
       else
-       return NSS_STATUS_NOTFOUND;
+       {
+         *errnop = ENOENT;
+         return NSS_STATUS_NOTFOUND;
+       }
     }
   return NSS_STATUS_SUCCESS;
 }
index 6dca66e4df025240edba9c27054b5aa31e63a050..62e6b475b7f8f90f618fc5c3b07cc011b107e198 100644 (file)
@@ -1,6 +1,6 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
+   Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public License as
@@ -207,7 +207,7 @@ _nss_nis_getgrnam_r (const char *name, struct group *grp,
        return NSS_STATUS_TRYAGAIN;
       else
        {
-         *errnop = EAGAIN;
+         *errnop = ENOENT;
          return NSS_STATUS_NOTFOUND;
        }
     }
index d791b98b3ed2d5046fb04342debdbbe328876076..8521dfbaa8c4e90d739cee3878ee8af93f979107 100644 (file)
@@ -1,6 +1,6 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
+   Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public License as
@@ -314,6 +314,7 @@ _nss_nis_gethostbyname2_r (const char *name, int af, struct hostent *host,
       else
        {
          *h_errnop = HOST_NOT_FOUND;
+         *errnop = ENOENT;
          return NSS_STATUS_NOTFOUND;
        }
     }
@@ -375,7 +376,10 @@ _nss_nis_gethostbyaddr_r (char *addr, int addrlen, int type,
          *errnop = errno;
        }
       if (retval == NSS_STATUS_NOTFOUND)
-       *h_errnop = HOST_NOT_FOUND;
+       {
+         *h_errnop = HOST_NOT_FOUND;
+         *errnop = ENOENT;
+       }
       return retval;
     }
 
@@ -404,6 +408,7 @@ _nss_nis_gethostbyaddr_r (char *addr, int addrlen, int type,
       else
        {
          *h_errnop = HOST_NOT_FOUND;
+         *errnop = ENOENT;
          return NSS_STATUS_NOTFOUND;
        }
     }
index d170b56f5056e077463609221223ac28cceebb18..0d3ed44d3f68f954e1209b0780601a7022373682 100644 (file)
@@ -1,6 +1,6 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
+   Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public License as
@@ -117,7 +117,10 @@ _nss_nis_getnetgrent_r (struct __netgrent *result, char *buffer, size_t buflen,
   enum nss_status status;
 
   if (cursor == NULL)
-    return NSS_STATUS_NOTFOUND;
+    {
+      *errnop = ENOENT;
+      return NSS_STATUS_NOTFOUND;
+    }
 
   __libc_lock_lock (lock);
 
index 73afd442a9a3fc7f0f98b4d60ea47f8ac33d2fce..821accfbae1216c099770bcd111f80c626d60c81 100644 (file)
@@ -1,6 +1,6 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
+   Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public License as
@@ -50,8 +50,11 @@ _nss_nis_getpublickey (const char *netname, char *pkey, int *errnop)
 
   domain = strchr (netname, '@');
   if (!domain)
-    return NSS_STATUS_UNAVAIL;
-  domain++;
+    {
+      *errnop = EINVAL;
+      return NSS_STATUS_UNAVAIL;
+    }
+  ++domain;
 
   retval = yperr2nss (yp_match (domain, "publickey.byname", netname,
                                strlen (netname), &result, &len));
@@ -95,8 +98,11 @@ _nss_nis_getsecretkey (const char *netname, char *skey, char *passwd,
 
   domain = strchr (netname, '@');
   if (!domain)
-    return NSS_STATUS_UNAVAIL;
-  domain++;
+    {
+      *errnop = EINVAL;
+      return NSS_STATUS_UNAVAIL;
+    }
+  ++domain;
 
   retval = yperr2nss (yp_match (domain, "publickey.byname", netname,
                                strlen (netname), &result, &len));
@@ -196,10 +202,13 @@ _nss_nis_netname2user (char netname[MAXNETNAMELEN + 1], uid_t *uidp,
 
   domain = strchr (netname, '@');
   if (!domain)
-    return NSS_STATUS_UNAVAIL;
+    {
+      *errnop = EINVAL;
+      return NSS_STATUS_UNAVAIL;
+    }
 
   /* Point past the '@' character */
-  domain++;
+  ++domain;
   lookup = NULL;
   yperr = yp_match (domain, "netid.byname", netname, strlen (netname),
                    &lookup, &len);
@@ -209,11 +218,13 @@ _nss_nis_netname2user (char netname[MAXNETNAMELEN + 1], uid_t *uidp,
       break;                   /* the successful case */
     case YPERR_DOMAIN:
     case YPERR_KEY:
+      *errnop = ENOENT;
       return NSS_STATUS_NOTFOUND;
     case YPERR_MAP:
     default:
       return NSS_STATUS_UNAVAIL;
     }
+
   if (lookup)
     {
       enum nss_status err;
@@ -224,7 +235,9 @@ _nss_nis_netname2user (char netname[MAXNETNAMELEN + 1], uid_t *uidp,
       return err;
     }
   else
-    return NSS_STATUS_NOTFOUND;
-
+    {
+      *errnop = ENOENT;
+      return NSS_STATUS_NOTFOUND;
+    }
   return NSS_STATUS_SUCCESS;
 }