key.k.uid = uid;
if ((node = rbfind(pwcache_byuid, &key)) != NULL) {
item = node->data;
+ sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s: uid %u -> user %s (cache hit)",
+ __func__, (unsigned int)uid, item->d.pw->pw_name);
goto done;
}
/*
item->refcnt = 0;
break;
}
+ sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s: uid %u -> user %s (cached)",
+ __func__, (unsigned int)uid,
+ item->d.pw ? item->d.pw->pw_name : "unknown");
done:
item->refcnt++;
debug_return_ptr(item->d.pw);
key.k.name = (char *) name;
if ((node = rbfind(pwcache_byname, &key)) != NULL) {
item = node->data;
+ sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s: user %s -> uid %u (cache hit)",
+ __func__, name, (unsigned int)item->d.pw->pw_uid);
goto done;
}
/*
item->refcnt = 0;
break;
}
+ sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s: user %s -> uid %d (cached)",
+ __func__, name, item->d.pw ? (int)item->d.pw->pw_uid : -1);
done:
item->refcnt++;
debug_return_ptr(item->d.pw);
if (shell == NULL)
shell = _PATH_BSHELL;
+ sudo_debug_printf(SUDO_DEBUG_DEBUG,
+ "%s: creating and caching passwd struct for %s:%u:%u:%s:%s", __func__,
+ user, (unsigned int)uid, (unsigned int)gid, home, shell);
+
name_len = strlen(user);
home_len = strlen(home);
shell_len = strlen(shell);
uid = (uid_t) sudo_strtoid(user + 1, NULL, NULL, &errstr);
if (errstr != NULL) {
- sudo_debug_printf(SUDO_DEBUG_DEBUG|SUDO_DEBUG_DIAG,
+ sudo_debug_printf(SUDO_DEBUG_DIAG|SUDO_DEBUG_LINENO,
"uid %s %s", user, errstr);
debug_return_ptr(NULL);
}
key.k.gid = gid;
if ((node = rbfind(grcache_bygid, &key)) != NULL) {
item = node->data;
+ sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s: gid %u -> group %s (cache hit)",
+ __func__, (unsigned int)gid, item->d.gr->gr_name);
goto done;
}
/*
item->refcnt = 0;
break;
}
+ sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s: gid %u -> group %s (cached)",
+ __func__, (unsigned int)gid,
+ item->d.gr ? item->d.gr->gr_name : "unknown");
done:
item->refcnt++;
debug_return_ptr(item->d.gr);
key.k.name = (char *) name;
if ((node = rbfind(grcache_byname, &key)) != NULL) {
item = node->data;
+ sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s: group %s -> gid %u (cache hit)",
+ __func__, name, (unsigned int)item->d.gr->gr_gid);
goto done;
}
/*
item->refcnt = 0;
break;
}
+ sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s: group %s -> gid %d (cache hit)",
+ __func__, name, item->d.gr ? (int)item->d.gr->gr_gid : -1);
done:
item->refcnt++;
debug_return_ptr(item->d.gr);
gr->gr_name = (char *)(gritem + 1);
memcpy(gr->gr_name, group, name_len + 1);
if (errstr != NULL) {
- sudo_debug_printf(SUDO_DEBUG_DEBUG|SUDO_DEBUG_DIAG,
+ sudo_debug_printf(SUDO_DEBUG_DIAG|SUDO_DEBUG_LINENO,
"gid %s %s", group, errstr);
free(gritem);
debug_return_ptr(NULL);
item->refcnt = 0;
break;
}
+ if (item->d.grlist != NULL) {
+ int i;
+ for (i = 0; i < item->d.grlist->ngroups; i++) {
+ sudo_debug_printf(SUDO_DEBUG_DEBUG,
+ "%s: user %s is a member of group %s", __func__,
+ pw->pw_name, item->d.grlist->groups[i]);
+ }
+ }
done:
item->refcnt++;
debug_return_ptr(item->d.grlist);
if (group[0] == '#') {
gid_t gid = (gid_t) sudo_strtoid(group + 1, NULL, NULL, &errstr);
if (errstr != NULL) {
- sudo_debug_printf(SUDO_DEBUG_DEBUG|SUDO_DEBUG_DIAG,
+ sudo_debug_printf(SUDO_DEBUG_DIAG|SUDO_DEBUG_LINENO,
"gid %s %s", group, errstr);
} else {
if (gid == pw->pw_gid) {
sudo_gr_delref(grp);
sudo_grlist_delref(grlist);
}
+ sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s: user %s %sin group %s",
+ __func__, pw->pw_name, matched ? "" : "NOT ", group);
debug_return_bool(matched);
}