/*
- * 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));
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);
}
}
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;
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);
}
}
*/
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);
}
}
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;
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);
}
}