prepare to upload
[debian/sudo] / pwutil.c
index 2fd0988008ac4799159c5b9f69fce74b4afbe226..29471b6bee986fa54fb6d546e7be0ec060995bfb 100644 (file)
--- a/pwutil.c
+++ b/pwutil.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 1998-2005, 2007-2008
+ * Copyright (c) 1996, 1998-2005, 2007-2009
  *     Todd C. Miller <Todd.Miller@courtesan.com>
  *
  * Permission to use, copy, modify, and distribute this software for any
 #include "sudo.h"
 #include "redblack.h"
 
-#ifndef lint
-__unused static const char rcsid[] = "$Sudo: pwutil.c,v 1.21 2008/11/09 14:13:12 millert Exp $";
-#endif /* lint */
-
 #ifdef MYPW
 extern void (*my_setgrent) __P((void));
 extern void (*my_endgrent) __P((void));
@@ -207,18 +203,16 @@ sudo_getpwuid(uid)
        if (pw->pw_passwd != NULL)
            zero_bytes(pw->pw_passwd, strlen(pw->pw_passwd));
        pw->pw_passwd = cp;
-
-       if (rbinsert(pwcache_byname, (void *) pw) != NULL)
-           errorx(1, "unable to cache user name, already exists");
        if (rbinsert(pwcache_byuid, (void *) pw) != NULL)
-           errorx(1, "unable to cache uid, already exists");
+           errorx(1, "unable to cache uid %lu (%s), already exists",
+               uid, pw->pw_name);
        return(pw);
     } else {
        pw = emalloc(sizeof(*pw));
        zero_bytes(pw, sizeof(*pw));
        pw->pw_uid = uid;
        if (rbinsert(pwcache_byuid, (void *) pw) != NULL)
-           errorx(1, "unable to cache uid, already exists");
+           errorx(1, "unable to cache uid %lu, already exists", uid);
        return(NULL);
     }
 }
@@ -250,11 +244,8 @@ sudo_getpwnam(name)
        if (pw->pw_passwd != NULL)
            zero_bytes(pw->pw_passwd, strlen(pw->pw_passwd));
        pw->pw_passwd = cp;
-
        if (rbinsert(pwcache_byname, (void *) pw) != NULL)
-           errorx(1, "unable to cache user name, already exists");
-       if (rbinsert(pwcache_byuid, (void *) pw) != NULL)
-           errorx(1, "unable to cache uid, already exists");
+           errorx(1, "unable to cache user %s, already exists", name);
        return(pw);
     } else {
        len = strlen(name) + 1;
@@ -266,7 +257,7 @@ sudo_getpwnam(name)
        pw->pw_name = cp;
        pw->pw_uid = (uid_t) -1;
        if (rbinsert(pwcache_byname, (void *) pw) != NULL)
-           errorx(1, "unable to cache user name, already exists");
+           errorx(1, "unable to cache user %s, already exists", name);
        return(NULL);
     }
 }
@@ -487,17 +478,16 @@ sudo_getgrgid(gid)
      */
     if ((gr = getgrgid(gid)) != NULL) {
        gr = sudo_grdup(gr);
-       if (rbinsert(grcache_byname, (void *) gr) != NULL)
-           errorx(1, "unable to cache group name, already exists");
        if (rbinsert(grcache_bygid, (void *) gr) != NULL)
-           errorx(1, "unable to cache gid, already exists");
+           errorx(1, "unable to cache gid %lu (%s), already exists",
+               gid, gr->gr_name);
        return(gr);
     } else {
        gr = emalloc(sizeof(*gr));
        zero_bytes(gr, sizeof(*gr));
        gr->gr_gid = gid;
        if (rbinsert(grcache_bygid, (void *) gr) != NULL)
-           errorx(1, "unable to cache gid, already exists");
+           errorx(1, "unable to cache gid %lu, already exists, gid");
        return(NULL);
     }
 }
@@ -525,9 +515,7 @@ sudo_getgrnam(name)
     if ((gr = getgrnam(name)) != NULL) {
        gr = sudo_grdup(gr);
        if (rbinsert(grcache_byname, (void *) gr) != NULL)
-           errorx(1, "unable to cache group name, already exists");
-       if (rbinsert(grcache_bygid, (void *) gr) != NULL)
-           errorx(1, "unable to cache gid, already exists");
+           errorx(1, "unable to cache group %s, already exists", name);
        return(gr);
     } else {
        len = strlen(name) + 1;
@@ -539,7 +527,7 @@ sudo_getgrnam(name)
        gr->gr_name = cp;
        gr->gr_gid = (gid_t) -1;
        if (rbinsert(grcache_byname, (void *) gr) != NULL)
-           errorx(1, "unable to cache group name, already exists");
+           errorx(1, "unable to cache group %s, already exists", name);
        return(NULL);
     }
 }