Add support for multiple Debug lines per program. Callers may
register arbitrary debug facilities or use built-in defaults. We now use separate Debug statements for plugins and programs.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 1998-2005, 2007-2013
|
||||
* Copyright (c) 1996, 1998-2005, 2007-2014
|
||||
* Todd C. Miller <Todd.Miller@courtesan.com>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
@@ -91,7 +91,7 @@ cmp_pwnam(const void *v1, const void *v2)
|
||||
void
|
||||
sudo_pw_addref(struct passwd *pw)
|
||||
{
|
||||
debug_decl(sudo_pw_addref, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_pw_addref, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
ptr_to_item(pw)->refcnt++;
|
||||
debug_return;
|
||||
}
|
||||
@@ -100,7 +100,7 @@ static void
|
||||
sudo_pw_delref_item(void *v)
|
||||
{
|
||||
struct cache_item *item = v;
|
||||
debug_decl(sudo_pw_delref_item, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_pw_delref_item, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
if (--item->refcnt == 0)
|
||||
sudo_efree(item);
|
||||
@@ -111,7 +111,7 @@ sudo_pw_delref_item(void *v)
|
||||
void
|
||||
sudo_pw_delref(struct passwd *pw)
|
||||
{
|
||||
debug_decl(sudo_pw_delref, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_pw_delref, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
sudo_pw_delref_item(ptr_to_item(pw));
|
||||
debug_return;
|
||||
}
|
||||
@@ -124,7 +124,7 @@ sudo_getpwuid(uid_t uid)
|
||||
{
|
||||
struct cache_item key, *item;
|
||||
struct rbnode *node;
|
||||
debug_decl(sudo_getpwuid, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_getpwuid, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
key.k.uid = uid;
|
||||
if ((node = rbfind(pwcache_byuid, &key)) != NULL) {
|
||||
@@ -167,7 +167,7 @@ sudo_getpwnam(const char *name)
|
||||
struct cache_item key, *item;
|
||||
struct rbnode *node;
|
||||
size_t len;
|
||||
debug_decl(sudo_getpwnam, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_getpwnam, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
key.k.name = (char *) name;
|
||||
if ((node = rbfind(pwcache_byname, &key)) != NULL) {
|
||||
@@ -215,7 +215,7 @@ sudo_mkpwent(const char *user, uid_t uid, gid_t gid, const char *home,
|
||||
struct rbnode *node;
|
||||
size_t len, name_len, home_len, shell_len;
|
||||
int i;
|
||||
debug_decl(sudo_mkpwent, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_mkpwent, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
/* Optional arguments. */
|
||||
if (home == NULL)
|
||||
@@ -278,7 +278,7 @@ sudo_fakepwnam(const char *user, gid_t gid)
|
||||
{
|
||||
const char *errstr;
|
||||
uid_t uid;
|
||||
debug_decl(sudo_fakepwnam, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_fakepwnam, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
uid = (uid_t) sudo_strtoid(user + 1, NULL, NULL, &errstr);
|
||||
if (errstr != NULL) {
|
||||
@@ -292,7 +292,7 @@ sudo_fakepwnam(const char *user, gid_t gid)
|
||||
void
|
||||
sudo_setpwent(void)
|
||||
{
|
||||
debug_decl(sudo_setpwent, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_setpwent, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
setpwent();
|
||||
if (pwcache_byuid == NULL)
|
||||
@@ -306,7 +306,7 @@ sudo_setpwent(void)
|
||||
void
|
||||
sudo_freepwcache(void)
|
||||
{
|
||||
debug_decl(sudo_freepwcache, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_freepwcache, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
if (pwcache_byuid != NULL) {
|
||||
rbdestroy(pwcache_byuid, sudo_pw_delref_item);
|
||||
@@ -323,7 +323,7 @@ sudo_freepwcache(void)
|
||||
void
|
||||
sudo_endpwent(void)
|
||||
{
|
||||
debug_decl(sudo_endpwent, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_endpwent, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
endpwent();
|
||||
sudo_freepwcache();
|
||||
@@ -345,7 +345,7 @@ cmp_grgid(const void *v1, const void *v2)
|
||||
void
|
||||
sudo_gr_addref(struct group *gr)
|
||||
{
|
||||
debug_decl(sudo_gr_addref, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_gr_addref, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
ptr_to_item(gr)->refcnt++;
|
||||
debug_return;
|
||||
}
|
||||
@@ -354,7 +354,7 @@ static void
|
||||
sudo_gr_delref_item(void *v)
|
||||
{
|
||||
struct cache_item *item = v;
|
||||
debug_decl(sudo_gr_delref_item, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_gr_delref_item, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
if (--item->refcnt == 0)
|
||||
sudo_efree(item);
|
||||
@@ -365,7 +365,7 @@ sudo_gr_delref_item(void *v)
|
||||
void
|
||||
sudo_gr_delref(struct group *gr)
|
||||
{
|
||||
debug_decl(sudo_gr_delref, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_gr_delref, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
sudo_gr_delref_item(ptr_to_item(gr));
|
||||
debug_return;
|
||||
}
|
||||
@@ -378,7 +378,7 @@ sudo_getgrgid(gid_t gid)
|
||||
{
|
||||
struct cache_item key, *item;
|
||||
struct rbnode *node;
|
||||
debug_decl(sudo_getgrgid, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_getgrgid, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
key.k.gid = gid;
|
||||
if ((node = rbfind(grcache_bygid, &key)) != NULL) {
|
||||
@@ -415,7 +415,7 @@ sudo_getgrnam(const char *name)
|
||||
struct cache_item key, *item;
|
||||
struct rbnode *node;
|
||||
size_t len;
|
||||
debug_decl(sudo_getgrnam, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_getgrnam, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
key.k.name = (char *) name;
|
||||
if ((node = rbfind(grcache_byname, &key)) != NULL) {
|
||||
@@ -456,7 +456,7 @@ sudo_fakegrnam(const char *group)
|
||||
struct rbnode *node;
|
||||
size_t len, name_len;
|
||||
int i;
|
||||
debug_decl(sudo_fakegrnam, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_fakegrnam, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
name_len = strlen(group);
|
||||
len = sizeof(*gritem) + name_len + 1;
|
||||
@@ -501,7 +501,7 @@ sudo_fakegrnam(const char *group)
|
||||
void
|
||||
sudo_grlist_addref(struct group_list *grlist)
|
||||
{
|
||||
debug_decl(sudo_gr_addref, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_gr_addref, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
ptr_to_item(grlist)->refcnt++;
|
||||
debug_return;
|
||||
}
|
||||
@@ -510,7 +510,7 @@ static void
|
||||
sudo_grlist_delref_item(void *v)
|
||||
{
|
||||
struct cache_item *item = v;
|
||||
debug_decl(sudo_gr_delref_item, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_gr_delref_item, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
if (--item->refcnt == 0)
|
||||
sudo_efree(item);
|
||||
@@ -521,7 +521,7 @@ sudo_grlist_delref_item(void *v)
|
||||
void
|
||||
sudo_grlist_delref(struct group_list *grlist)
|
||||
{
|
||||
debug_decl(sudo_gr_delref, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_gr_delref, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
sudo_grlist_delref_item(ptr_to_item(grlist));
|
||||
debug_return;
|
||||
}
|
||||
@@ -529,7 +529,7 @@ sudo_grlist_delref(struct group_list *grlist)
|
||||
void
|
||||
sudo_setgrent(void)
|
||||
{
|
||||
debug_decl(sudo_setgrent, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_setgrent, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
setgrent();
|
||||
if (grcache_bygid == NULL)
|
||||
@@ -545,7 +545,7 @@ sudo_setgrent(void)
|
||||
void
|
||||
sudo_freegrcache(void)
|
||||
{
|
||||
debug_decl(sudo_freegrcache, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_freegrcache, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
if (grcache_bygid != NULL) {
|
||||
rbdestroy(grcache_bygid, sudo_gr_delref_item);
|
||||
@@ -566,7 +566,7 @@ sudo_freegrcache(void)
|
||||
void
|
||||
sudo_endgrent(void)
|
||||
{
|
||||
debug_decl(sudo_endgrent, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_endgrent, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
endgrent();
|
||||
sudo_freegrcache();
|
||||
@@ -580,7 +580,7 @@ sudo_get_grlist(const struct passwd *pw)
|
||||
struct cache_item key, *item;
|
||||
struct rbnode *node;
|
||||
size_t len;
|
||||
debug_decl(sudo_get_grlist, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_get_grlist, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
key.k.name = pw->pw_name;
|
||||
if ((node = rbfind(grlist_cache, &key)) != NULL) {
|
||||
@@ -616,7 +616,7 @@ sudo_set_grlist(struct passwd *pw, char * const *groups, char * const *gids)
|
||||
{
|
||||
struct cache_item key, *item;
|
||||
struct rbnode *node;
|
||||
debug_decl(sudo_set_grlist, SUDO_DEBUG_NSS)
|
||||
debug_decl(sudo_set_grlist, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
/*
|
||||
* Cache group db entry if it doesn't already exist
|
||||
@@ -644,7 +644,7 @@ user_in_group(const struct passwd *pw, const char *group)
|
||||
const char *errstr;
|
||||
int i;
|
||||
bool matched = false;
|
||||
debug_decl(user_in_group, SUDO_DEBUG_NSS)
|
||||
debug_decl(user_in_group, SUDO_DEBUG_NSS, sudoers_debug_instance)
|
||||
|
||||
if ((grlist = sudo_get_grlist(pw)) != NULL) {
|
||||
/*
|
||||
|
Reference in New Issue
Block a user