mirror of
https://github.com/sudo-project/sudo.git
synced 2025-09-05 08:45:28 +00:00
Use stdbool.h instead of rolling our own TRUE/FALSE macros.
This commit is contained in:
@@ -87,13 +87,13 @@
|
||||
|
||||
static struct member_list empty;
|
||||
|
||||
static int command_matches_dir(char *, size_t);
|
||||
static int command_matches_glob(char *, char *);
|
||||
static int command_matches_fnmatch(char *, char *);
|
||||
static int command_matches_normal(char *, char *);
|
||||
static bool command_matches_dir(char *, size_t);
|
||||
static bool command_matches_glob(char *, char *);
|
||||
static bool command_matches_fnmatch(char *, char *);
|
||||
static bool command_matches_normal(char *, char *);
|
||||
|
||||
/*
|
||||
* Returns TRUE if string 's' contains meta characters.
|
||||
* Returns true if string 's' contains meta characters.
|
||||
*/
|
||||
#define has_meta(s) (strpbrk(s, "\\?*[]") != NULL)
|
||||
|
||||
@@ -356,7 +356,7 @@ cmnd_matches(struct member *m)
|
||||
debug_return_bool(matched);
|
||||
}
|
||||
|
||||
static int
|
||||
static bool
|
||||
command_args_match(sudoers_cmnd, sudoers_args)
|
||||
char *sudoers_cmnd;
|
||||
char *sudoers_args;
|
||||
@@ -370,7 +370,7 @@ command_args_match(sudoers_cmnd, sudoers_args)
|
||||
*/
|
||||
if (!sudoers_args ||
|
||||
(!user_args && sudoers_args && !strcmp("\"\"", sudoers_args)))
|
||||
debug_return_bool(TRUE);
|
||||
debug_return_bool(true);
|
||||
/*
|
||||
* If args are specified in sudoers, they must match the user args.
|
||||
* If running as sudoedit, all args are assumed to be paths.
|
||||
@@ -380,16 +380,16 @@ command_args_match(sudoers_cmnd, sudoers_args)
|
||||
if (strcmp(sudoers_cmnd, "sudoedit") == 0)
|
||||
flags = FNM_PATHNAME;
|
||||
if (fnmatch(sudoers_args, user_args ? user_args : "", flags) == 0)
|
||||
debug_return_bool(TRUE);
|
||||
debug_return_bool(true);
|
||||
}
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
}
|
||||
|
||||
/*
|
||||
* If path doesn't end in /, return TRUE iff cmnd & path name the same inode;
|
||||
* otherwise, return TRUE if user_cmnd names one of the inodes in path.
|
||||
* If path doesn't end in /, return true iff cmnd & path name the same inode;
|
||||
* otherwise, return true if user_cmnd names one of the inodes in path.
|
||||
*/
|
||||
int
|
||||
bool
|
||||
command_matches(char *sudoers_cmnd, char *sudoers_args)
|
||||
{
|
||||
debug_decl(command_matches, SUDO_DEBUG_MATCH)
|
||||
@@ -404,13 +404,13 @@ command_matches(char *sudoers_cmnd, char *sudoers_args)
|
||||
*/
|
||||
if (strcmp(sudoers_cmnd, "sudoedit") != 0 ||
|
||||
strcmp(user_cmnd, "sudoedit") != 0)
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
if (command_args_match(sudoers_cmnd, sudoers_args)) {
|
||||
efree(safe_cmnd);
|
||||
safe_cmnd = estrdup(sudoers_cmnd);
|
||||
debug_return_bool(TRUE);
|
||||
debug_return_bool(true);
|
||||
} else
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
}
|
||||
|
||||
if (has_meta(sudoers_cmnd)) {
|
||||
@@ -425,7 +425,7 @@ command_matches(char *sudoers_cmnd, char *sudoers_args)
|
||||
debug_return_bool(command_matches_normal(sudoers_cmnd, sudoers_args));
|
||||
}
|
||||
|
||||
static int
|
||||
static bool
|
||||
command_matches_fnmatch(char *sudoers_cmnd, char *sudoers_args)
|
||||
{
|
||||
debug_decl(command_matches_fnmatch, SUDO_DEBUG_MATCH)
|
||||
@@ -438,17 +438,17 @@ command_matches_fnmatch(char *sudoers_cmnd, char *sudoers_args)
|
||||
* else return false.
|
||||
*/
|
||||
if (fnmatch(sudoers_cmnd, user_cmnd, FNM_PATHNAME) != 0)
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
if (command_args_match(sudoers_cmnd, sudoers_args)) {
|
||||
if (safe_cmnd)
|
||||
free(safe_cmnd);
|
||||
safe_cmnd = estrdup(user_cmnd);
|
||||
debug_return_bool(TRUE);
|
||||
debug_return_bool(true);
|
||||
}
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
}
|
||||
|
||||
static int
|
||||
static bool
|
||||
command_matches_glob(char *sudoers_cmnd, char *sudoers_args)
|
||||
{
|
||||
struct stat sudoers_stat;
|
||||
@@ -467,7 +467,7 @@ command_matches_glob(char *sudoers_cmnd, char *sudoers_args)
|
||||
if ((base = strrchr(sudoers_cmnd, '/')) != NULL) {
|
||||
base++;
|
||||
if (!has_meta(base) && strcmp(user_base, base) != 0)
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
}
|
||||
}
|
||||
/*
|
||||
@@ -480,7 +480,7 @@ command_matches_glob(char *sudoers_cmnd, char *sudoers_args)
|
||||
#define GLOB_FLAGS (GLOB_NOSORT | GLOB_MARK | GLOB_BRACE | GLOB_TILDE)
|
||||
if (glob(sudoers_cmnd, GLOB_FLAGS, NULL, &gl) != 0 || gl.gl_pathc == 0) {
|
||||
globfree(&gl);
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
}
|
||||
/* For each glob match, compare basename, st_dev and st_ino. */
|
||||
for (ap = gl.gl_pathv; (cp = *ap) != NULL; ap++) {
|
||||
@@ -488,7 +488,7 @@ command_matches_glob(char *sudoers_cmnd, char *sudoers_args)
|
||||
dlen = strlen(cp);
|
||||
if (cp[dlen - 1] == '/') {
|
||||
if (command_matches_dir(cp, dlen))
|
||||
debug_return_bool(TRUE);
|
||||
debug_return_bool(true);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -510,17 +510,17 @@ command_matches_glob(char *sudoers_cmnd, char *sudoers_args)
|
||||
}
|
||||
globfree(&gl);
|
||||
if (cp == NULL)
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
|
||||
if (command_args_match(sudoers_cmnd, sudoers_args)) {
|
||||
efree(safe_cmnd);
|
||||
safe_cmnd = estrdup(user_cmnd);
|
||||
debug_return_bool(TRUE);
|
||||
debug_return_bool(true);
|
||||
}
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
}
|
||||
|
||||
static int
|
||||
static bool
|
||||
command_matches_normal(char *sudoers_cmnd, char *sudoers_args)
|
||||
{
|
||||
struct stat sudoers_stat;
|
||||
@@ -540,7 +540,7 @@ command_matches_normal(char *sudoers_cmnd, char *sudoers_args)
|
||||
base++;
|
||||
if (strcmp(user_base, base) != 0 ||
|
||||
stat(sudoers_cmnd, &sudoers_stat) == -1)
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
|
||||
/*
|
||||
* Return true if inode/device matches AND
|
||||
@@ -551,19 +551,19 @@ command_matches_normal(char *sudoers_cmnd, char *sudoers_args)
|
||||
if (user_stat != NULL &&
|
||||
(user_stat->st_dev != sudoers_stat.st_dev ||
|
||||
user_stat->st_ino != sudoers_stat.st_ino))
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
if (command_args_match(sudoers_cmnd, sudoers_args)) {
|
||||
efree(safe_cmnd);
|
||||
safe_cmnd = estrdup(sudoers_cmnd);
|
||||
debug_return_bool(TRUE);
|
||||
debug_return_bool(true);
|
||||
}
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
}
|
||||
|
||||
/*
|
||||
* Return TRUE if user_cmnd names one of the inodes in dir, else FALSE.
|
||||
* Return true if user_cmnd names one of the inodes in dir, else false.
|
||||
*/
|
||||
static int
|
||||
static bool
|
||||
command_matches_dir(char *sudoers_dir, size_t dlen)
|
||||
{
|
||||
struct stat sudoers_stat;
|
||||
@@ -577,11 +577,11 @@ command_matches_dir(char *sudoers_dir, size_t dlen)
|
||||
*/
|
||||
dirp = opendir(sudoers_dir);
|
||||
if (dirp == NULL)
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
|
||||
if (strlcpy(buf, sudoers_dir, sizeof(buf)) >= sizeof(buf)) {
|
||||
closedir(dirp);
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
}
|
||||
while ((dent = readdir(dirp)) != NULL) {
|
||||
/* ignore paths > PATH_MAX (XXX - log) */
|
||||
@@ -607,9 +607,9 @@ command_matches_dir(char *sudoers_dir, size_t dlen)
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns TRUE if the hostname matches the pattern, else FALSE
|
||||
* Returns true if the hostname matches the pattern, else false
|
||||
*/
|
||||
int
|
||||
bool
|
||||
hostname_matches(char *shost, char *lhost, char *pattern)
|
||||
{
|
||||
debug_decl(hostname_matches, SUDO_DEBUG_MATCH)
|
||||
@@ -628,10 +628,10 @@ hostname_matches(char *shost, char *lhost, char *pattern)
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns TRUE if the user/uid from sudoers matches the specified user/uid,
|
||||
* else returns FALSE.
|
||||
* Returns true if the user/uid from sudoers matches the specified user/uid,
|
||||
* else returns false.
|
||||
*/
|
||||
int
|
||||
bool
|
||||
userpw_matches(char *sudoers_user, char *user, struct passwd *pw)
|
||||
{
|
||||
debug_decl(userpw_matches, SUDO_DEBUG_MATCH)
|
||||
@@ -639,16 +639,16 @@ userpw_matches(char *sudoers_user, char *user, struct passwd *pw)
|
||||
if (pw != NULL && *sudoers_user == '#') {
|
||||
uid_t uid = (uid_t) atoi(sudoers_user + 1);
|
||||
if (uid == pw->pw_uid)
|
||||
debug_return_bool(TRUE);
|
||||
debug_return_bool(true);
|
||||
}
|
||||
debug_return_bool(strcmp(sudoers_user, user) == 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns TRUE if the group/gid from sudoers matches the specified group/gid,
|
||||
* else returns FALSE.
|
||||
* Returns true if the group/gid from sudoers matches the specified group/gid,
|
||||
* else returns false.
|
||||
*/
|
||||
int
|
||||
bool
|
||||
group_matches(char *sudoers_group, struct group *gr)
|
||||
{
|
||||
debug_decl(group_matches, SUDO_DEBUG_MATCH)
|
||||
@@ -656,19 +656,19 @@ group_matches(char *sudoers_group, struct group *gr)
|
||||
if (*sudoers_group == '#') {
|
||||
gid_t gid = (gid_t) atoi(sudoers_group + 1);
|
||||
if (gid == gr->gr_gid)
|
||||
debug_return_bool(TRUE);
|
||||
debug_return_bool(true);
|
||||
}
|
||||
debug_return_bool(strcmp(gr->gr_name, sudoers_group) == 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns TRUE if the given user belongs to the named group,
|
||||
* else returns FALSE.
|
||||
* Returns true if the given user belongs to the named group,
|
||||
* else returns false.
|
||||
*/
|
||||
int
|
||||
bool
|
||||
usergr_matches(char *group, char *user, struct passwd *pw)
|
||||
{
|
||||
int matched = FALSE;
|
||||
int matched = false;
|
||||
struct passwd *pw0 = NULL;
|
||||
debug_decl(usergr_matches, SUDO_DEBUG_MATCH)
|
||||
|
||||
@@ -689,13 +689,13 @@ usergr_matches(char *group, char *user, struct passwd *pw)
|
||||
}
|
||||
|
||||
if (user_in_group(pw, group)) {
|
||||
matched = TRUE;
|
||||
matched = true;
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* not a Unix group, could be an external group */
|
||||
if (def_group_plugin && group_plugin_query(user, group, pw)) {
|
||||
matched = TRUE;
|
||||
matched = true;
|
||||
goto done;
|
||||
}
|
||||
|
||||
@@ -707,13 +707,13 @@ done:
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns TRUE if "host" and "user" belong to the netgroup "netgr",
|
||||
* else return FALSE. Either of "host", "shost" or "user" may be NULL
|
||||
* Returns true if "host" and "user" belong to the netgroup "netgr",
|
||||
* else return false. Either of "host", "shost" or "user" may be NULL
|
||||
* in which case that argument is not checked...
|
||||
*
|
||||
* XXX - swap order of host & shost
|
||||
*/
|
||||
int
|
||||
bool
|
||||
netgr_matches(char *netgr, char *lhost, char *shost, char *user)
|
||||
{
|
||||
static char *domain;
|
||||
@@ -724,7 +724,7 @@ netgr_matches(char *netgr, char *lhost, char *shost, char *user)
|
||||
|
||||
/* make sure we have a valid netgroup, sudo style */
|
||||
if (*netgr++ != '+')
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
|
||||
#ifdef HAVE_GETDOMAINNAME
|
||||
/* get the domain name (if any) */
|
||||
@@ -740,10 +740,10 @@ netgr_matches(char *netgr, char *lhost, char *shost, char *user)
|
||||
|
||||
#ifdef HAVE_INNETGR
|
||||
if (innetgr(netgr, lhost, user, domain))
|
||||
debug_return_bool(TRUE);
|
||||
debug_return_bool(true);
|
||||
else if (lhost != shost && innetgr(netgr, shost, user, domain))
|
||||
debug_return_bool(TRUE);
|
||||
debug_return_bool(true);
|
||||
#endif /* HAVE_INNETGR */
|
||||
|
||||
debug_return_bool(FALSE);
|
||||
debug_return_bool(false);
|
||||
}
|
||||
|
Reference in New Issue
Block a user