2
0
mirror of https://github.com/sudo-project/sudo.git synced 2025-08-31 22:35:10 +00:00

Use stdbool.h instead of rolling our own TRUE/FALSE macros.

This commit is contained in:
Todd C. Miller
2011-12-02 11:27:33 -05:00
parent 86c86183ab
commit 21a2f95821
45 changed files with 1060 additions and 1048 deletions

View File

@@ -28,6 +28,11 @@
# include <sys/file.h>
#endif /* HAVE_FLOCK */
#include <stdio.h>
#ifdef HAVE_STDBOOL_H
# include <stdbool.h>
#else
# include "compat/stdbool.h"
#endif
#ifdef HAVE_STRING_H
# include <string.h>
#endif /* HAVE_STRING_H */
@@ -84,7 +89,7 @@ touch(int fd, char *path, struct timeval *tvp)
* Lock/unlock a file.
*/
#ifdef HAVE_LOCKF
int
bool
lock_file(int fd, int lockit)
{
int op = 0;
@@ -101,10 +106,10 @@ lock_file(int fd, int lockit)
op = F_ULOCK;
break;
}
debug_return_int(lockf(fd, op, 0) == 0);
debug_return_bool(lockf(fd, op, 0) == 0);
}
#elif HAVE_FLOCK
int
bool
lock_file(int fd, int lockit)
{
int op = 0;
@@ -121,10 +126,10 @@ lock_file(int fd, int lockit)
op = LOCK_UN;
break;
}
debug_return_int(flock(fd, op) == 0);
debug_return_bool(flock(fd, op) == 0);
}
#else
int
bool
lock_file(int fd, int lockit)
{
#ifdef F_SETLK
@@ -139,9 +144,9 @@ lock_file(int fd, int lockit)
lock.l_whence = SEEK_SET;
func = (lockit == SUDO_LOCK) ? F_SETLKW : F_SETLK;
debug_return_int(fcntl(fd, func, &lock) == 0);
debug_return_bool(fcntl(fd, func, &lock) == 0);
#else
return TRUE;
return true;
#endif
}
#endif

View File

@@ -29,6 +29,11 @@
# include <stdlib.h>
# endif
#endif /* STDC_HEADERS */
#ifdef HAVE_STDBOOL_H
# include <stdbool.h>
#else
# include "compat/stdbool.h"
#endif
#ifdef HAVE_STRING_H
# include <string.h>
#endif /* HAVE_STRING_H */
@@ -195,15 +200,16 @@ void sudo_debug_exit_long(const char *func, const char *file, int line,
void sudo_debug_exit_size_t(const char *func, const char *file, int line,
int subsys, size_t rval)
{
/* XXX - should use %zu but snprintf.c doesn't support it */
/* XXX - should use %zu but our snprintf.c doesn't support it */
sudo_debug_printf2(subsys | SUDO_DEBUG_TRACE, "<- %s @ %s:%d := %lu", func,
file, line, (unsigned long)rval);
}
/* We use int, not bool, here for functions that return -1 on error. */
void sudo_debug_exit_bool(const char *func, const char *file, int line,
int subsys, int rval)
{
if (rval == 0 || rval == 1) {
if (rval == true || rval == false) {
sudo_debug_printf2(subsys | SUDO_DEBUG_TRACE, "<- %s @ %s:%d := %s",
func, file, line, rval ? "true" : "false");
} else {

4
configure vendored
View File

@@ -5461,12 +5461,12 @@ fi
if test "$env_reset" = "on"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define ENV_RESET TRUE" >>confdefs.h
$as_echo "#define ENV_RESET 1" >>confdefs.h
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
$as_echo "#define ENV_RESET FALSE" >>confdefs.h
$as_echo "#define ENV_RESET 0" >>confdefs.h
fi

View File

@@ -1272,10 +1272,10 @@ AC_ARG_ENABLE(env_reset,
])
if test "$env_reset" = "on"; then
AC_MSG_RESULT(yes)
AC_DEFINE(ENV_RESET, TRUE)
AC_DEFINE(ENV_RESET, 1)
else
AC_MSG_RESULT(no)
AC_DEFINE(ENV_RESET, FALSE)
AC_DEFINE(ENV_RESET, 0)
fi
AC_ARG_ENABLE(warnings,

View File

@@ -26,7 +26,7 @@
struct timeval;
int lock_file(int, int);
bool lock_file(int, int);
int touch(int, char *, struct timeval *);
char *sudo_parseln(FILE *);

View File

@@ -36,7 +36,7 @@ INSTALL = $(SHELL) $(top_srcdir)/install-sh -c
LIBS = $(LIBOBJDIR)/libreplace.la
# C preprocessor flags
CPPFLAGS = -I$(incdir) -I$(top_builddir) @CPPFLAGS@
CPPFLAGS = -I$(incdir) -I$(top_builddir) -I$(top_srcdir) @CPPFLAGS@
# Usually -O and/or -g
CFLAGS = @CFLAGS@

View File

@@ -30,6 +30,11 @@
# include <stdlib.h>
# endif
#endif /* STDC_HEADERS */
#ifdef HAVE_STDBOOL_H
# include <stdbool.h>
#else
# include "compat/stdbool.h"
#endif /* HAVE_STDBOOL_H */
#ifdef HAVE_STRING_H
# if defined(HAVE_MEMORY_H) && !defined(STDC_HEADERS)
# include <memory.h>
@@ -65,13 +70,6 @@
# define ROOT_UID 0
#endif
#undef TRUE
#define TRUE 1
#undef FALSE
#define FALSE 0
#undef ERROR
#define ERROR -1
static struct plugin_state {
char **envp;
char * const *settings;
@@ -82,7 +80,7 @@ static sudo_printf_t sudo_log;
static FILE *input, *output;
static uid_t runas_uid = ROOT_UID;
static gid_t runas_gid = -1;
static int use_sudoedit = FALSE;
static int use_sudoedit = false;
/*
* Allocate storage for a name=value string and return it.
@@ -130,7 +128,7 @@ policy_open(unsigned int version, sudo_conv_t conversation,
sudo_log(SUDO_CONV_ERROR_MSG,
"the sample plugin requires API version %d.x\n",
SUDO_API_VERSION_MAJOR);
return ERROR;
return -1;
}
/* Only allow commands to be run as root. */
@@ -149,7 +147,7 @@ policy_open(unsigned int version, sudo_conv_t conversation,
/* Check to see if sudo was called as sudoedit or with -e flag. */
if (strncmp(*ui, "sudoedit=", sizeof("sudoedit=") - 1) == 0) {
if (strcasecmp(*ui + sizeof("sudoedit=") - 1, "true") == 0)
use_sudoedit = TRUE;
use_sudoedit = true;
}
/* This plugin doesn't support running sudo with no arguments. */
if (strncmp(*ui, "implied_shell=", sizeof("implied_shell=") - 1) == 0) {
@@ -229,13 +227,13 @@ check_passwd(void)
sudo_conv(1, &msg, &repl);
if (repl.reply == NULL) {
sudo_log(SUDO_CONV_ERROR_MSG, "missing password\n");
return FALSE;
return false;
}
if (strcmp(repl.reply, "test") != 0) {
sudo_log(SUDO_CONV_ERROR_MSG, "incorrect password\n");
return FALSE;
return false;
}
return TRUE;
return true;
}
static char **
@@ -341,30 +339,30 @@ policy_check(int argc, char * const argv[],
if (!argc || argv[0] == NULL) {
sudo_log(SUDO_CONV_ERROR_MSG, "no command specified\n");
return FALSE;
return false;
}
if (!check_passwd())
return FALSE;
return false;
command = find_in_path(argv[0], plugin_state.envp);
if (command == NULL) {
sudo_log(SUDO_CONV_ERROR_MSG, "%s: command not found\n", argv[0]);
return FALSE;
return false;
}
/* If "sudo vi" is run, auto-convert to sudoedit. */
if (strcmp(command, _PATH_VI) == 0)
use_sudoedit = TRUE;
use_sudoedit = true;
if (use_sudoedit) {
/* Rebuild argv using editor */
command = find_editor(argc - 1, argv + 1, argv_out);
if (command == NULL) {
sudo_log(SUDO_CONV_ERROR_MSG, "unable to find valid editor\n");
return ERROR;
return -1;
}
use_sudoedit = TRUE;
use_sudoedit = true;
} else {
/* No changes needd to argv */
*argv_out = (char **)argv;
@@ -377,10 +375,10 @@ policy_check(int argc, char * const argv[],
*command_info_out = build_command_info(command);
if (*command_info_out == NULL) {
sudo_log(SUDO_CONV_ERROR_MSG, "out of memory\n");
return ERROR;
return -1;
}
return TRUE;
return true;
}
static int
@@ -390,14 +388,14 @@ policy_list(int argc, char * const argv[], int verbose, const char *list_user)
* List user's capabilities.
*/
sudo_log(SUDO_CONV_INFO_MSG, "Validated users may run any command\n");
return TRUE;
return true;
}
static int
policy_version(int verbose)
{
sudo_log(SUDO_CONV_INFO_MSG, "Sample policy plugin version %s\n", PACKAGE_VERSION);
return TRUE;
return true;
}
static void
@@ -439,17 +437,17 @@ io_open(unsigned int version, sudo_conv_t conversation,
(unsigned int)getpid());
fd = open(path, O_WRONLY|O_CREAT|O_EXCL, 0644);
if (fd == -1)
return FALSE;
return false;
output = fdopen(fd, "w");
snprintf(path, sizeof(path), "/var/tmp/sample-%u.input",
(unsigned int)getpid());
fd = open(path, O_WRONLY|O_CREAT|O_EXCL, 0644);
if (fd == -1)
return FALSE;
return false;
input = fdopen(fd, "w");
return TRUE;
return true;
}
static void
@@ -464,21 +462,21 @@ io_version(int verbose)
{
sudo_log(SUDO_CONV_INFO_MSG, "Sample I/O plugin version %s\n",
PACKAGE_VERSION);
return TRUE;
return true;
}
static int
io_log_input(const char *buf, unsigned int len)
{
fwrite(buf, len, 1, input);
return TRUE;
return true;
}
static int
io_log_output(const char *buf, unsigned int len)
{
fwrite(buf, len, 1, output);
return TRUE;
return true;
}
struct policy_plugin sample_policy = {

View File

@@ -36,7 +36,7 @@ INSTALL = $(SHELL) $(top_srcdir)/install-sh -c
LIBS = $(LIBOBJDIR)/libreplace.la
# C preprocessor flags
CPPFLAGS = -I$(incdir) -I$(top_builddir) @CPPFLAGS@
CPPFLAGS = -I$(incdir) -I$(top_builddir) -I$(top_srcdir) @CPPFLAGS@
# Usually -O and/or -g
CFLAGS = @CFLAGS@

View File

@@ -29,6 +29,11 @@
# include <stdlib.h>
# endif
#endif /* STDC_HEADERS */
#ifdef HAVE_STDBOOL_H
# include <stdbool.h>
#else
# include "compat/stdbool.h"
#endif /* HAVE_STDBOOL_H */
#ifdef HAVE_STRING_H
# if defined(HAVE_MEMORY_H) && !defined(STDC_HEADERS)
# include <memory.h>
@@ -56,13 +61,6 @@
* same format as /etc/group.
*/
#undef TRUE
#define TRUE 1
#undef FALSE
#define FALSE 0
#undef ERROR
#define ERROR -1
static sudo_printf_t sudo_log;
extern void mysetgrfile(const char *);
@@ -82,30 +80,30 @@ sample_init(int version, sudo_printf_t sudo_printf, char *const argv[])
"sample_group: incompatible major version %d, expected %d\n",
GROUP_API_VERSION_GET_MAJOR(version),
GROUP_API_VERSION_MAJOR);
return ERROR;
return -1;
}
/* Sanity check the specified group file. */
if (argv == NULL || argv[0] == NULL) {
sudo_log(SUDO_CONV_ERROR_MSG,
"sample_group: path to group file not specified\n");
return ERROR;
return -1;
}
if (stat(argv[0], &sb) != 0) {
sudo_log(SUDO_CONV_ERROR_MSG,
"sample_group: %s: %s\n", argv[0], strerror(errno));
return ERROR;
return -1;
}
if ((sb.st_mode & (S_IWGRP|S_IWOTH)) != 0) {
sudo_log(SUDO_CONV_ERROR_MSG,
"%s must be only be writable by owner\n", argv[0]);
return ERROR;
return -1;
}
mysetgrfile(argv[0]);
mysetgrent();
return TRUE;
return true;
}
static void
@@ -115,7 +113,7 @@ sample_cleanup(void)
}
/*
* Returns TRUE if "user" is a member of "group", else FALSE.
* Returns true if "user" is a member of "group", else false.
*/
static int
sample_query(const char *user, const char *group, const struct passwd *pwd)
@@ -127,11 +125,11 @@ sample_query(const char *user, const char *group, const struct passwd *pwd)
if (grp != NULL) {
for (member = grp->gr_mem; *member != NULL; member++) {
if (strcasecmp(user, *member) == 0)
return TRUE;
return true;
}
}
return FALSE;
return false;
}
struct sudoers_group_plugin group_plugin = {

View File

@@ -143,13 +143,13 @@ alias_apply(int (*func)(void *, void *), void *cookie)
}
/*
* Returns TRUE if there are no aliases, else FALSE.
* Returns true if there are no aliases, else false.
*/
int
bool
no_aliases(void)
{
debug_decl(no_aliases, SUDO_DEBUG_ALIAS)
debug_return_int(rbisempty(aliases));
debug_return_bool(rbisempty(aliases));
}
/*

View File

@@ -108,7 +108,7 @@ sudo_auth_init(struct passwd *pw)
debug_decl(sudo_auth_init, SUDO_DEBUG_AUTH)
if (auth_switch[0].name == NULL)
debug_return_int(TRUE);
debug_return_int(true);
/* Make sure we haven't mixed standalone and shared auth methods. */
standalone = IS_STANDALONE(&auth_switch[0]);
@@ -143,7 +143,7 @@ sudo_auth_init(struct passwd *pw)
}
}
}
debug_return_int(status == AUTH_FATAL ? -1 : TRUE);
debug_return_int(status == AUTH_FATAL ? -1 : true);
}
int
@@ -171,7 +171,7 @@ sudo_auth_cleanup(struct passwd *pw)
}
}
}
debug_return_int(status == AUTH_FATAL ? -1 : TRUE);
debug_return_int(status == AUTH_FATAL ? -1 : true);
}
int
@@ -259,7 +259,7 @@ done:
switch (success) {
case AUTH_SUCCESS:
(void) sigaction(SIGTSTP, &osa, NULL);
rval = TRUE;
rval = true;
break;
case AUTH_INTR:
case AUTH_FAILURE:
@@ -273,7 +273,7 @@ done:
def_passwd_tries - counter), def_passwd_tries - counter);
}
audit_failure(NewArgv, "authentication failure");
rval = FALSE;
rval = false;
break;
case AUTH_FATAL:
default:
@@ -302,7 +302,7 @@ sudo_auth_begin_session(struct passwd *pw)
}
}
}
debug_return_bool(TRUE);
debug_return_bool(true);
}
int
@@ -321,7 +321,7 @@ sudo_auth_end_session(struct passwd *pw)
}
}
}
debug_return_bool(TRUE);
debug_return_bool(true);
}
static void

View File

@@ -89,11 +89,11 @@ static int timestamp_status(char *, char *, char *, int);
static char *expand_prompt(char *, char *, char *);
static void lecture(int);
static void update_timestamp(char *, char *);
static int tty_is_devpts(const char *);
static bool tty_is_devpts(const char *);
static struct passwd *get_authpw(void);
/*
* Returns TRUE if the user successfully authenticates, else FALSE.
* Returns true if the user successfully authenticates, else false.
*/
int
check_user(int validated, int mode)
@@ -103,8 +103,8 @@ check_user(int validated, int mode)
char *timestampfile = NULL;
char *prompt;
struct stat sb;
int status, rval = TRUE;
int need_pass = def_authenticate;
int status, rval = true;
bool need_pass = def_authenticate;
debug_decl(check_user, SUDO_DEBUG_AUTH)
/*
@@ -129,7 +129,7 @@ check_user(int validated, int mode)
if (user_uid == 0 || (user_uid == runas_pw->pw_uid &&
(!runas_gr || user_in_group(sudo_user.pw, runas_gr->gr_name)))
|| user_is_exempt())
need_pass = FALSE;
need_pass = false;
}
}
if (!need_pass)
@@ -170,7 +170,7 @@ check_user(int validated, int mode)
rval = verify_user(auth_pw, prompt);
}
/* Only update timestamp if user was validated. */
if (rval == TRUE && ISSET(validated, VALIDATE_OK) &&
if (rval == true && ISSET(validated, VALIDATE_OK) &&
!ISSET(mode, MODE_IGNORE_TICKET) && status != TS_ERROR)
update_timestamp(timestampdir, timestampfile);
efree(timestampdir);
@@ -180,7 +180,7 @@ done:
sudo_auth_cleanup(auth_pw);
pw_delref(auth_pw);
debug_return_int(rval);
debug_return_bool(rval);
}
#define DEFAULT_LECTURE "\n" \
@@ -399,10 +399,10 @@ oflow:
/*
* Checks if the user is exempt from supplying a password.
*/
int
bool
user_is_exempt(void)
{
int rval = FALSE;
bool rval = false;
debug_decl(user_is_exempt, SUDO_DEBUG_AUTH)
if (def_exempt_group)
@@ -660,7 +660,7 @@ done:
* Remove the timestamp ticket file/dir.
*/
void
remove_timestamp(int remove)
remove_timestamp(bool remove)
{
struct timeval tv;
char *timestampdir, *timestampfile, *path;
@@ -683,7 +683,7 @@ remove_timestamp(int remove)
log_error(NO_EXIT,
_("unable to remove %s (%s), will reset to the epoch"),
path, strerror(errno));
remove = FALSE;
remove = false;
}
}
if (!remove) {
@@ -699,17 +699,17 @@ remove_timestamp(int remove)
}
/*
* Returns TRUE if tty lives on a devpts or /devices filesystem, else FALSE.
* Returns true if tty lives on a devpts or /devices filesystem, else false.
* Unlike most filesystems, the ctime of devpts nodes is not updated when
* the device node is written to, only when the inode's status changes,
* typically via the chmod, chown, link, rename, or utimes system calls.
* Since the ctime is "stable" in this case, we can stash it the tty ticket
* file and use it to determine whether the tty ticket file is stale.
*/
static int
static bool
tty_is_devpts(const char *tty)
{
int retval = FALSE;
bool retval = false;
#ifdef __linux__
struct statfs sfs;
debug_decl(tty_is_devpts, SUDO_DEBUG_PTY)
@@ -720,7 +720,7 @@ tty_is_devpts(const char *tty)
if (statfs(tty, &sfs) == 0) {
if (sfs.f_type == DEVPTS_SUPER_MAGIC)
retval = TRUE;
retval = true;
}
#elif defined(__sun) && defined(__SVR4)
struct statvfs sfs;
@@ -728,7 +728,7 @@ tty_is_devpts(const char *tty)
if (statvfs(tty, &sfs) == 0) {
if (strcmp(sfs.f_fstr, "devices") == 0)
retval = TRUE;
retval = true;
}
#else
debug_decl(tty_is_devpts, SUDO_DEBUG_PTY)

View File

@@ -91,15 +91,15 @@ static struct strmap priorities[] = {
/*
* Local prototypes.
*/
static int store_int(char *, struct sudo_defs_types *, int);
static int store_list(char *, struct sudo_defs_types *, int);
static int store_mode(char *, struct sudo_defs_types *, int);
static int store_str(char *, struct sudo_defs_types *, int);
static int store_syslogfac(char *, struct sudo_defs_types *, int);
static int store_syslogpri(char *, struct sudo_defs_types *, int);
static int store_tuple(char *, struct sudo_defs_types *, int);
static int store_uint(char *, struct sudo_defs_types *, int);
static int store_float(char *, struct sudo_defs_types *, int);
static bool store_int(char *, struct sudo_defs_types *, bool);
static bool store_list(char *, struct sudo_defs_types *, bool);
static bool store_mode(char *, struct sudo_defs_types *, bool);
static bool store_str(char *, struct sudo_defs_types *, bool);
static bool store_syslogfac(char *, struct sudo_defs_types *, bool);
static bool store_syslogpri(char *, struct sudo_defs_types *, bool);
static bool store_tuple(char *, struct sudo_defs_types *, bool);
static bool store_uint(char *, struct sudo_defs_types *, bool);
static bool store_float(char *, struct sudo_defs_types *, bool);
static void list_op(char *, size_t, struct sudo_defs_types *, enum list_ops);
static const char *logfac2str(int);
static const char *logpri2str(int);
@@ -193,8 +193,8 @@ dump_defaults(void)
* Eg. you may want to turn off logging to a file for some hosts.
* This is only meaningful for variables that are *optional*.
*/
int
set_default(char *var, char *val, int op)
bool
set_default(char *var, char *val, bool op)
{
struct sudo_defs_types *cur;
int num;
@@ -206,7 +206,7 @@ set_default(char *var, char *val, int op)
}
if (!cur->name) {
warningx(_("unknown defaults entry `%s'"), var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
switch (cur->type & T_MASK) {
@@ -217,7 +217,7 @@ set_default(char *var, char *val, int op)
val, var);
else
warningx(_("no value specified for `%s'"), var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
break;
case T_LOGPRI:
@@ -227,111 +227,111 @@ set_default(char *var, char *val, int op)
val, var);
else
warningx(_("no value specified for `%s'"), var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
break;
case T_STR:
if (!val) {
/* Check for bogus boolean usage or lack of a value. */
if (!ISSET(cur->type, T_BOOL) || op != FALSE) {
if (!ISSET(cur->type, T_BOOL) || op != false) {
warningx(_("no value specified for `%s'"), var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
}
if (ISSET(cur->type, T_PATH) && val && *val != '/') {
warningx(_("values for `%s' must start with a '/'"), var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
if (!store_str(val, cur, op)) {
warningx(_("value `%s' is invalid for option `%s'"), val, var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
break;
case T_INT:
if (!val) {
/* Check for bogus boolean usage or lack of a value. */
if (!ISSET(cur->type, T_BOOL) || op != FALSE) {
if (!ISSET(cur->type, T_BOOL) || op != false) {
warningx(_("no value specified for `%s'"), var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
}
if (!store_int(val, cur, op)) {
warningx(_("value `%s' is invalid for option `%s'"), val, var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
break;
case T_UINT:
if (!val) {
/* Check for bogus boolean usage or lack of a value. */
if (!ISSET(cur->type, T_BOOL) || op != FALSE) {
if (!ISSET(cur->type, T_BOOL) || op != false) {
warningx(_("no value specified for `%s'"), var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
}
if (!store_uint(val, cur, op)) {
warningx(_("value `%s' is invalid for option `%s'"), val, var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
break;
case T_FLOAT:
if (!val) {
/* Check for bogus boolean usage or lack of a value. */
if (!ISSET(cur->type, T_BOOL) || op != FALSE) {
if (!ISSET(cur->type, T_BOOL) || op != false) {
warningx(_("no value specified for `%s'"), var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
}
if (!store_float(val, cur, op)) {
warningx(_("value `%s' is invalid for option `%s'"), val, var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
break;
case T_MODE:
if (!val) {
/* Check for bogus boolean usage or lack of a value. */
if (!ISSET(cur->type, T_BOOL) || op != FALSE) {
if (!ISSET(cur->type, T_BOOL) || op != false) {
warningx(_("no value specified for `%s'"), var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
}
if (!store_mode(val, cur, op)) {
warningx(_("value `%s' is invalid for option `%s'"), val, var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
break;
case T_FLAG:
if (val) {
warningx(_("option `%s' does not take a value"), var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
cur->sd_un.flag = op;
break;
case T_LIST:
if (!val) {
/* Check for bogus boolean usage or lack of a value. */
if (!ISSET(cur->type, T_BOOL) || op != FALSE) {
if (!ISSET(cur->type, T_BOOL) || op != false) {
warningx(_("no value specified for `%s'"), var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
}
if (!store_list(val, cur, op)) {
warningx(_("value `%s' is invalid for option `%s'"), val, var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
break;
case T_TUPLE:
if (!val && !ISSET(cur->type, T_BOOL)) {
warningx(_("no value specified for `%s'"), var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
if (!store_tuple(val, cur, op)) {
warningx(_("value `%s' is invalid for option `%s'"), val, var);
debug_return_bool(FALSE);
debug_return_bool(false);
}
break;
}
debug_return_bool(TRUE);
debug_return_bool(true);
}
/*
@@ -363,78 +363,78 @@ init_defaults(void)
/* First initialize the flags. */
#ifdef LONG_OTP_PROMPT
def_long_otp_prompt = TRUE;
def_long_otp_prompt = true;
#endif
#ifdef IGNORE_DOT_PATH
def_ignore_dot = TRUE;
def_ignore_dot = true;
#endif
#ifdef ALWAYS_SEND_MAIL
def_mail_always = TRUE;
def_mail_always = true;
#endif
#ifdef SEND_MAIL_WHEN_NO_USER
def_mail_no_user = TRUE;
def_mail_no_user = true;
#endif
#ifdef SEND_MAIL_WHEN_NO_HOST
def_mail_no_host = TRUE;
def_mail_no_host = true;
#endif
#ifdef SEND_MAIL_WHEN_NOT_OK
def_mail_no_perms = TRUE;
def_mail_no_perms = true;
#endif
#ifndef NO_TTY_TICKETS
def_tty_tickets = TRUE;
def_tty_tickets = true;
#endif
#ifndef NO_LECTURE
def_lecture = once;
#endif
#ifndef NO_AUTHENTICATION
def_authenticate = TRUE;
def_authenticate = true;
#endif
#ifndef NO_ROOT_SUDO
def_root_sudo = TRUE;
def_root_sudo = true;
#endif
#ifdef HOST_IN_LOG
def_log_host = TRUE;
def_log_host = true;
#endif
#ifdef SHELL_IF_NO_ARGS
def_shell_noargs = TRUE;
def_shell_noargs = true;
#endif
#ifdef SHELL_SETS_HOME
def_set_home = TRUE;
def_set_home = true;
#endif
#ifndef DONT_LEAK_PATH_INFO
def_path_info = TRUE;
def_path_info = true;
#endif
#ifdef FQDN
def_fqdn = TRUE;
def_fqdn = true;
#endif
#ifdef USE_INSULTS
def_insults = TRUE;
def_insults = true;
#endif
#ifdef ENV_EDITOR
def_env_editor = TRUE;
def_env_editor = true;
#endif
#ifdef UMASK_OVERRIDE
def_umask_override = TRUE;
def_umask_override = true;
#endif
def_iolog_file = estrdup("%{seq}");
def_iolog_dir = estrdup(_PATH_SUDO_IO_LOGDIR);
def_sudoers_locale = estrdup("C");
def_env_reset = ENV_RESET;
def_set_logname = TRUE;
def_set_logname = true;
def_closefrom = STDERR_FILENO + 1;
/* Syslog options need special care since they both strings and ints */
#if (LOGGING & SLOG_SYSLOG)
(void) store_syslogfac(LOGFAC, &sudo_defs_table[I_SYSLOG], TRUE);
(void) store_syslogfac(LOGFAC, &sudo_defs_table[I_SYSLOG], true);
(void) store_syslogpri(PRI_SUCCESS, &sudo_defs_table[I_SYSLOG_GOODPRI],
TRUE);
true);
(void) store_syslogpri(PRI_FAILURE, &sudo_defs_table[I_SYSLOG_BADPRI],
TRUE);
true);
#endif
/* Password flags also have a string and integer component. */
(void) store_tuple("any", &sudo_defs_table[I_LISTPW], TRUE);
(void) store_tuple("all", &sudo_defs_table[I_VERIFYPW], TRUE);
(void) store_tuple("any", &sudo_defs_table[I_LISTPW], true);
(void) store_tuple("all", &sudo_defs_table[I_VERIFYPW], true);
/* Then initialize the int-like things. */
#ifdef SUDO_UMASK
@@ -447,7 +447,7 @@ init_defaults(void)
def_passwd_timeout = PASSWORD_TIMEOUT;
def_passwd_tries = TRIES_FOR_PASSWORD;
#ifdef HAVE_ZLIB_H
def_compress_io = TRUE;
def_compress_io = true;
#endif
/* Now do the strings */
@@ -471,7 +471,7 @@ init_defaults(void)
def_secure_path = estrdup(SECURE_PATH);
#endif
def_editor = estrdup(EDITOR);
def_set_utmp = TRUE;
def_set_utmp = true;
/* Finally do the lists (currently just environment tables). */
init_envtables();
@@ -489,110 +489,110 @@ int
update_defaults(int what)
{
struct defaults *def;
int rc = TRUE;
debug_decl(init_defaults, SUDO_DEBUG_DEFAULTS)
bool rc = true;
debug_decl(update_defaults, SUDO_DEBUG_DEFAULTS)
tq_foreach_fwd(&defaults, def) {
switch (def->type) {
case DEFAULTS:
if (ISSET(what, SETDEF_GENERIC) &&
!set_default(def->var, def->val, def->op))
rc = FALSE;
rc = false;
break;
case DEFAULTS_USER:
if (ISSET(what, SETDEF_USER) &&
userlist_matches(sudo_user.pw, &def->binding) == ALLOW &&
!set_default(def->var, def->val, def->op))
rc = FALSE;
rc = false;
break;
case DEFAULTS_RUNAS:
if (ISSET(what, SETDEF_RUNAS) &&
runaslist_matches(&def->binding, NULL) == ALLOW &&
!set_default(def->var, def->val, def->op))
rc = FALSE;
rc = false;
break;
case DEFAULTS_HOST:
if (ISSET(what, SETDEF_HOST) &&
hostlist_matches(&def->binding) == ALLOW &&
!set_default(def->var, def->val, def->op))
rc = FALSE;
rc = false;
break;
case DEFAULTS_CMND:
if (ISSET(what, SETDEF_CMND) &&
cmndlist_matches(&def->binding) == ALLOW &&
!set_default(def->var, def->val, def->op))
rc = FALSE;
rc = false;
break;
}
}
debug_return_bool(rc);
}
static int
store_int(char *val, struct sudo_defs_types *def, int op)
static bool
store_int(char *val, struct sudo_defs_types *def, bool op)
{
char *endp;
long l;
debug_decl(store_int, SUDO_DEBUG_DEFAULTS)
if (op == FALSE) {
if (op == false) {
def->sd_un.ival = 0;
} else {
l = strtol(val, &endp, 10);
if (*endp != '\0')
debug_return_bool(FALSE);
debug_return_bool(false);
/* XXX - should check against INT_MAX */
def->sd_un.ival = (int)l;
}
if (def->callback)
debug_return_bool(def->callback(val));
debug_return_bool(TRUE);
debug_return_bool(true);
}
static int
store_uint(char *val, struct sudo_defs_types *def, int op)
static bool
store_uint(char *val, struct sudo_defs_types *def, bool op)
{
char *endp;
long l;
debug_decl(store_uint, SUDO_DEBUG_DEFAULTS)
if (op == FALSE) {
if (op == false) {
def->sd_un.ival = 0;
} else {
l = strtol(val, &endp, 10);
if (*endp != '\0' || l < 0)
debug_return_bool(FALSE);
debug_return_bool(false);
/* XXX - should check against INT_MAX */
def->sd_un.ival = (unsigned int)l;
}
if (def->callback)
debug_return_bool(def->callback(val));
debug_return_bool(TRUE);
debug_return_bool(true);
}
static int
store_float(char *val, struct sudo_defs_types *def, int op)
static bool
store_float(char *val, struct sudo_defs_types *def, bool op)
{
char *endp;
double d;
debug_decl(store_float, SUDO_DEBUG_DEFAULTS)
if (op == FALSE) {
if (op == false) {
def->sd_un.fval = 0.0;
} else {
d = strtod(val, &endp);
if (*endp != '\0')
debug_return_bool(FALSE);
debug_return_bool(false);
/* XXX - should check against HUGE_VAL */
def->sd_un.fval = d;
}
if (def->callback)
debug_return_bool(def->callback(val));
debug_return_bool(TRUE);
debug_return_bool(true);
}
static int
store_tuple(char *val, struct sudo_defs_types *def, int op)
static bool
store_tuple(char *val, struct sudo_defs_types *def, bool op)
{
struct def_values *v;
debug_decl(store_tuple, SUDO_DEBUG_DEFAULTS)
@@ -605,7 +605,7 @@ store_tuple(char *val, struct sudo_defs_types *def, int op)
* be the equivalent to a boolean "false".
*/
if (!val) {
def->sd_un.ival = (op == FALSE) ? 0 : 1;
def->sd_un.ival = (op == false) ? 0 : 1;
} else {
for (v = def->values; v->sval != NULL; v++) {
if (strcmp(v->sval, val) == 0) {
@@ -614,40 +614,40 @@ store_tuple(char *val, struct sudo_defs_types *def, int op)
}
}
if (v->sval == NULL)
debug_return_bool(FALSE);
debug_return_bool(false);
}
if (def->callback)
debug_return_bool(def->callback(val));
debug_return_bool(TRUE);
debug_return_bool(true);
}
static int
store_str(char *val, struct sudo_defs_types *def, int op)
static bool
store_str(char *val, struct sudo_defs_types *def, bool op)
{
debug_decl(store_str, SUDO_DEBUG_DEFAULTS)
efree(def->sd_un.str);
if (op == FALSE)
if (op == false)
def->sd_un.str = NULL;
else
def->sd_un.str = estrdup(val);
if (def->callback)
debug_return_bool(def->callback(val));
debug_return_bool(TRUE);
debug_return_bool(true);
}
static int
store_list(char *str, struct sudo_defs_types *def, int op)
static bool
store_list(char *str, struct sudo_defs_types *def, bool op)
{
char *start, *end;
debug_decl(store_list, SUDO_DEBUG_DEFAULTS)
/* Remove all old members. */
if (op == FALSE || op == TRUE)
if (op == false || op == true)
list_op(NULL, 0, def, freeall);
/* Split str into multiple space-separated words and act on each one. */
if (op != FALSE) {
if (op != false) {
end = str;
do {
/* Remove leading blanks, if nothing but blanks we are done. */
@@ -662,32 +662,32 @@ store_list(char *str, struct sudo_defs_types *def, int op)
list_op(start, end - start, def, op == '-' ? delete : add);
} while (*end++ != '\0');
}
debug_return_bool(TRUE);
debug_return_bool(true);
}
static int
store_syslogfac(char *val, struct sudo_defs_types *def, int op)
static bool
store_syslogfac(char *val, struct sudo_defs_types *def, bool op)
{
struct strmap *fac;
debug_decl(store_syslogfac, SUDO_DEBUG_DEFAULTS)
if (op == FALSE) {
def->sd_un.ival = FALSE;
debug_return_bool(TRUE);
if (op == false) {
def->sd_un.ival = false;
debug_return_bool(true);
}
#ifdef LOG_NFACILITIES
if (!val)
debug_return_bool(FALSE);
debug_return_bool(false);
for (fac = facilities; fac->name && strcmp(val, fac->name); fac++)
;
if (fac->name == NULL)
debug_return_bool(FALSE); /* not found */
debug_return_bool(false); /* not found */
def->sd_un.ival = fac->num;
#else
def->sd_un.ival = -1;
#endif /* LOG_NFACILITIES */
debug_return_bool(TRUE);
debug_return_bool(true);
}
static const char *
@@ -705,22 +705,22 @@ logfac2str(int n)
#endif /* LOG_NFACILITIES */
}
static int
store_syslogpri(char *val, struct sudo_defs_types *def, int op)
static bool
store_syslogpri(char *val, struct sudo_defs_types *def, bool op)
{
struct strmap *pri;
debug_decl(store_syslogpri, SUDO_DEBUG_DEFAULTS)
if (op == FALSE || !val)
debug_return_bool(FALSE);
if (op == false || !val)
debug_return_bool(false);
for (pri = priorities; pri->name && strcmp(val, pri->name); pri++)
;
if (pri->name == NULL)
debug_return_bool(FALSE); /* not found */
debug_return_bool(false); /* not found */
def->sd_un.ival = pri->num;
debug_return_bool(TRUE);
debug_return_bool(true);
}
static const char *
@@ -734,24 +734,24 @@ logpri2str(int n)
debug_return_str(pri->name);
}
static int
store_mode(char *val, struct sudo_defs_types *def, int op)
static bool
store_mode(char *val, struct sudo_defs_types *def, bool op)
{
char *endp;
long l;
debug_decl(store_mode, SUDO_DEBUG_DEFAULTS)
if (op == FALSE) {
if (op == false) {
def->sd_un.mode = (mode_t)0777;
} else {
l = strtol(val, &endp, 8);
if (*endp != '\0' || l < 0 || l > 0777)
debug_return_bool(FALSE);
debug_return_bool(false);
def->sd_un.mode = (mode_t)l;
}
if (def->callback)
debug_return_bool(def->callback(val));
debug_return_bool(TRUE);
debug_return_bool(true);
}
static void

View File

@@ -107,7 +107,7 @@ struct sudo_defs_types {
*/
void dump_default(void);
void init_defaults(void);
int set_default(char *, char *, int);
bool set_default(char *, char *, bool);
int update_defaults(int);
extern struct sudo_defs_types sudo_defs_table[];

View File

@@ -257,7 +257,7 @@ sudo_setenv(const char *var, const char *val, int dupcheck)
errorx(1, _("internal error, sudo_setenv() overflow"));
}
sudo_putenv(estring, dupcheck, TRUE);
sudo_putenv(estring, dupcheck, true);
debug_return;
}
@@ -273,7 +273,7 @@ sudo_putenv(char *str, int dupcheck, int overwrite)
{
char **ep;
size_t len;
int found = FALSE;
bool found = false;
debug_decl(sudo_putenv, SUDO_DEBUG_ENV)
/* Make sure there is room for the new entry plus a NULL. */
@@ -297,7 +297,7 @@ sudo_putenv(char *str, int dupcheck, int overwrite)
if (strncmp(str, *ep, len) == 0) {
if (overwrite)
*ep = str;
found = TRUE;
found = true;
}
}
/* Prune out duplicate variables. */
@@ -326,14 +326,15 @@ sudo_putenv(char *str, int dupcheck, int overwrite)
/*
* Check the env_delete blacklist.
* Returns TRUE if the variable was found, else false.
* Returns true if the variable was found, else false.
*/
static int
static bool
matches_env_delete(const char *var)
{
struct list_member *cur;
size_t len;
int iswild, match = FALSE;
bool iswild;
bool match = false;
debug_decl(matches_env_delete, SUDO_DEBUG_ENV)
/* Skip anything listed in env_delete. */
@@ -342,12 +343,12 @@ matches_env_delete(const char *var)
/* Deal with '*' wildcard */
if (cur->value[len - 1] == '*') {
len--;
iswild = TRUE;
iswild = true;
} else
iswild = FALSE;
iswild = false;
if (strncmp(cur->value, var, len) == 0 &&
(iswild || var[len] == '=')) {
match = TRUE;
match = true;
break;
}
}
@@ -356,7 +357,7 @@ matches_env_delete(const char *var)
/*
* Apply the env_check list.
* Returns TRUE if the variable is allowed, FALSE if denied
* Returns true if the variable is allowed, false if denied
* or -1 if no match.
*/
static int
@@ -364,7 +365,8 @@ matches_env_check(const char *var)
{
struct list_member *cur;
size_t len;
int iswild, keepit = -1;
bool iswild;
int keepit = -1;
debug_decl(matches_env_check, SUDO_DEBUG_ENV)
for (cur = def_env_check; cur; cur = cur->next) {
@@ -372,9 +374,9 @@ matches_env_check(const char *var)
/* Deal with '*' wildcard */
if (cur->value[len - 1] == '*') {
len--;
iswild = TRUE;
iswild = true;
} else
iswild = FALSE;
iswild = false;
if (strncmp(cur->value, var, len) == 0 &&
(iswild || var[len] == '=')) {
keepit = !strpbrk(var, "/%");
@@ -386,30 +388,30 @@ matches_env_check(const char *var)
/*
* Check the env_keep list.
* Returns TRUE if the variable is allowed else FALSE.
* Returns true if the variable is allowed else false.
*/
static int
static bool
matches_env_keep(const char *var)
{
struct list_member *cur;
size_t len;
int iswild, keepit = FALSE;
bool iswild, keepit = false;
/* Preserve SHELL variable for "sudo -s". */
if (ISSET(sudo_mode, MODE_SHELL) && strncmp(var, "SHELL=", 6) == 0)
return TRUE;
return true;
for (cur = def_env_keep; cur; cur = cur->next) {
len = strlen(cur->value);
/* Deal with '*' wildcard */
if (cur->value[len - 1] == '*') {
len--;
iswild = TRUE;
iswild = true;
} else
iswild = FALSE;
iswild = false;
if (strncmp(cur->value, var, len) == 0 &&
(iswild || var[len] == '=')) {
keepit = TRUE;
keepit = true;
break;
}
}
@@ -427,7 +429,7 @@ rebuild_env(void)
char **old_envp, **ep, *cp, *ps1;
char idbuf[MAX_UID_T_LEN];
unsigned int didvar;
int reset_home = FALSE;
bool reset_home = false;
/*
* Either clean out the environment or reset to a safe default.
@@ -447,7 +449,7 @@ rebuild_env(void)
if (def_always_set_home ||
ISSET(sudo_mode, MODE_RESET_HOME | MODE_LOGIN_SHELL) ||
(ISSET(sudo_mode, MODE_SHELL) && def_set_home))
reset_home = TRUE;
reset_home = true;
}
if (def_env_reset || ISSET(sudo_mode, MODE_LOGIN_SHELL)) {
@@ -508,7 +510,7 @@ rebuild_env(void)
SET(didvar, DID_USERNAME);
break;
}
sudo_putenv(*ep, FALSE, FALSE);
sudo_putenv(*ep, false, false);
}
}
didvar |= didvar << 8; /* convert DID_* to KEPT_* */
@@ -527,18 +529,18 @@ rebuild_env(void)
ISSET(didvar, DID_USERNAME));
} else {
if (!ISSET(didvar, DID_SHELL))
sudo_setenv("SHELL", sudo_user.pw->pw_shell, FALSE);
sudo_setenv("SHELL", sudo_user.pw->pw_shell, false);
if (!ISSET(didvar, DID_LOGNAME))
sudo_setenv("LOGNAME", user_name, FALSE);
sudo_setenv("LOGNAME", user_name, false);
if (!ISSET(didvar, DID_USER))
sudo_setenv("USER", user_name, FALSE);
sudo_setenv("USER", user_name, false);
if (!ISSET(didvar, DID_USERNAME))
sudo_setenv("USERNAME", user_name, FALSE);
sudo_setenv("USERNAME", user_name, false);
}
/* If we didn't keep HOME, reset it based on target user. */
if (!ISSET(didvar, KEPT_HOME))
reset_home = TRUE;
reset_home = true;
/*
* Set MAIL to target user in -i mode or if MAIL is not preserved
@@ -550,7 +552,7 @@ rebuild_env(void)
easprintf(&cp, "MAIL=%s%s", _PATH_MAILDIR, runas_pw->pw_name);
else
easprintf(&cp, "MAIL=%s/%s", _PATH_MAILDIR, runas_pw->pw_name);
sudo_putenv(cp, ISSET(didvar, DID_MAIL), TRUE);
sudo_putenv(cp, ISSET(didvar, DID_MAIL), true);
}
} else {
/*
@@ -558,7 +560,7 @@ rebuild_env(void)
* env_check.
*/
for (ep = old_envp; *ep; ep++) {
int okvar;
bool okvar;
/* Skip variables with values beginning with () (bash functions) */
if ((cp = strchr(*ep, '=')) != NULL) {
@@ -570,9 +572,9 @@ rebuild_env(void)
* First check variables against the blacklist in env_delete.
* If no match there check for '%' and '/' characters.
*/
okvar = matches_env_delete(*ep) != TRUE;
okvar = matches_env_delete(*ep) != true;
if (okvar)
okvar = matches_env_check(*ep) != FALSE;
okvar = matches_env_check(*ep) != false;
if (okvar) {
if (strncmp(*ep, "SUDO_PS1=", 9) == 0)
@@ -581,13 +583,13 @@ rebuild_env(void)
SET(didvar, DID_PATH);
else if (strncmp(*ep, "TERM=", 5) == 0)
SET(didvar, DID_TERM);
sudo_putenv(*ep, FALSE, FALSE);
sudo_putenv(*ep, false, false);
}
}
}
/* Replace the PATH envariable with a secure one? */
if (def_secure_path && !user_is_exempt()) {
sudo_setenv("PATH", def_secure_path, TRUE);
sudo_setenv("PATH", def_secure_path, true);
SET(didvar, DID_PATH);
}
@@ -599,42 +601,42 @@ rebuild_env(void)
*/
if (def_set_logname && !ISSET(sudo_mode, MODE_LOGIN_SHELL|MODE_EDIT)) {
if (!ISSET(didvar, KEPT_LOGNAME))
sudo_setenv("LOGNAME", runas_pw->pw_name, TRUE);
sudo_setenv("LOGNAME", runas_pw->pw_name, true);
if (!ISSET(didvar, KEPT_USER))
sudo_setenv("USER", runas_pw->pw_name, TRUE);
sudo_setenv("USER", runas_pw->pw_name, true);
if (!ISSET(didvar, KEPT_USERNAME))
sudo_setenv("USERNAME", runas_pw->pw_name, TRUE);
sudo_setenv("USERNAME", runas_pw->pw_name, true);
}
/* Set $HOME to target user if not preserving user's value. */
if (reset_home)
sudo_setenv("HOME", runas_pw->pw_dir, TRUE);
sudo_setenv("HOME", runas_pw->pw_dir, true);
/* Provide default values for $TERM and $PATH if they are not set. */
if (!ISSET(didvar, DID_TERM))
sudo_putenv("TERM=unknown", FALSE, FALSE);
sudo_putenv("TERM=unknown", false, false);
if (!ISSET(didvar, DID_PATH))
sudo_setenv("PATH", _PATH_STDPATH, FALSE);
sudo_setenv("PATH", _PATH_STDPATH, false);
/* Set PS1 if SUDO_PS1 is set. */
if (ps1 != NULL)
sudo_putenv(ps1, TRUE, TRUE);
sudo_putenv(ps1, true, true);
/* Add the SUDO_COMMAND envariable (cmnd + args). */
if (user_args) {
easprintf(&cp, "%s %s", user_cmnd, user_args);
sudo_setenv("SUDO_COMMAND", cp, TRUE);
sudo_setenv("SUDO_COMMAND", cp, true);
efree(cp);
} else {
sudo_setenv("SUDO_COMMAND", user_cmnd, TRUE);
sudo_setenv("SUDO_COMMAND", user_cmnd, true);
}
/* Add the SUDO_USER, SUDO_UID, SUDO_GID environment variables. */
sudo_setenv("SUDO_USER", user_name, TRUE);
sudo_setenv("SUDO_USER", user_name, true);
snprintf(idbuf, sizeof(idbuf), "%u", (unsigned int) user_uid);
sudo_setenv("SUDO_UID", idbuf, TRUE);
sudo_setenv("SUDO_UID", idbuf, true);
snprintf(idbuf, sizeof(idbuf), "%u", (unsigned int) user_gid);
sudo_setenv("SUDO_GID", idbuf, TRUE);
sudo_setenv("SUDO_GID", idbuf, true);
/* Free old environment. */
efree(old_envp);
@@ -650,7 +652,7 @@ insert_env_vars(char * const envp[])
/* Add user-specified environment variables. */
for (ep = envp; *ep != NULL; ep++)
sudo_putenv(*ep, TRUE, TRUE);
sudo_putenv(*ep, true, true);
}
/*
@@ -664,7 +666,7 @@ validate_env_vars(char * const env_vars[])
char * const *ep;
char *eq, *bad = NULL;
size_t len, blen = 0, bsize = 0;
int okvar;
bool okvar;
if (env_vars == NULL)
return;
@@ -673,17 +675,17 @@ validate_env_vars(char * const env_vars[])
for (ep = env_vars; *ep != NULL; ep++) {
if (def_secure_path && !user_is_exempt() &&
strncmp(*ep, "PATH=", 5) == 0) {
okvar = FALSE;
okvar = false;
} else if (def_env_reset) {
okvar = matches_env_check(*ep);
if (okvar == -1)
okvar = matches_env_keep(*ep);
} else {
okvar = matches_env_delete(*ep) == FALSE;
if (okvar == FALSE)
okvar = matches_env_check(*ep) != FALSE;
okvar = matches_env_delete(*ep) == false;
if (okvar == false)
okvar = matches_env_check(*ep) != false;
}
if (okvar == FALSE) {
if (okvar == false) {
/* Not allowed, add to error string, allocating as needed. */
if ((eq = strchr(*ep, '=')) != NULL)
*eq = '\0';
@@ -763,7 +765,7 @@ read_env_file(const char *path, int overwrite)
memcpy(cp, var, var_len + 1); /* includes '=' */
memcpy(cp + var_len + 1, val, val_len + 1); /* includes NUL */
sudo_putenv(cp, TRUE, overwrite);
sudo_putenv(cp, true, overwrite);
}
fclose(fp);
}

View File

@@ -60,8 +60,8 @@ find_path(char *infile, char **outfile, struct stat *sbp, char *path,
static char command[PATH_MAX]; /* qualified filename */
char *n; /* for traversing path */
char *origpath; /* so we can free path later */
int found = FALSE; /* did we find the command? */
int checkdot = FALSE; /* check current dir? */
bool found = false; /* did we find the command? */
bool checkdot = false; /* check current dir? */
int len; /* length parameter */
debug_decl(find_path, SUDO_DEBUG_UTIL)

View File

@@ -41,22 +41,22 @@
/*
* Verify that path is a normal file and executable by root.
*/
int
bool
sudo_goodpath(const char *path, struct stat *sbp)
{
struct stat sb;
int rval = FALSE;
bool rval = false;
debug_decl(sudo_goodpath, SUDO_DEBUG_UTIL)
if (path != NULL && stat(path, &sb) == 0) {
/* Make sure path describes an executable regular file. */
if (S_ISREG(sb.st_mode) && ISSET(sb.st_mode, 0111))
rval = TRUE;
rval = true;
else
errno = EACCES;
if (sbp)
(void) memcpy(sbp, &sb, sizeof(struct stat));
}
debug_return_int(rval);
debug_return_bool(rval);
}

View File

@@ -64,7 +64,7 @@
#include "sudoers.h" /* XXX */
#include "parse.h"
#include "toke.h"
#include <gram.h>
#include "gram.h"
/*
* We must define SIZE_MAX for yacc's skeleton.c.
@@ -85,9 +85,8 @@
extern int sudolineno;
extern int last_token;
extern char *sudoers;
static int verbose = FALSE;
int parse_error = FALSE;
int pedantic = FALSE;
static bool verbose = false;
bool parse_error = false;
int errorlineno = -1;
char *errorfile = NULL;
@@ -122,10 +121,10 @@ yyerror(const char *s)
} else if (verbose && s != NULL) {
warningx(_(">>> %s: %s near line %d <<<"), sudoers, s, sudolineno);
}
parse_error = TRUE;
parse_error = true;
debug_return;
}
#line 118 "gram.y"
#line 117 "gram.y"
#ifndef YYSTYPE_DEFINED
#define YYSTYPE_DEFINED
typedef union {
@@ -141,7 +140,7 @@ typedef union {
int tok;
} YYSTYPE;
#endif /* YYSTYPE_DEFINED */
#line 144 "y.tab.c"
#line 143 "y.tab.c"
#define COMMAND 257
#define ALIAS 258
#define DEFVAR 259
@@ -639,7 +638,7 @@ short *yyss;
short *yysslim;
YYSTYPE *yyvs;
int yystacksize;
#line 612 "gram.y"
#line 611 "gram.y"
static struct defaults *
new_default(char *var, char *val, int op)
{
@@ -821,14 +820,14 @@ init_parser(const char *path, int quiet)
efree(sudoers);
sudoers = path ? estrdup(path) : NULL;
parse_error = FALSE;
parse_error = false;
errorlineno = -1;
errorfile = NULL;
verbose = !quiet;
debug_return;
}
#line 779 "y.tab.c"
#line 778 "y.tab.c"
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
#if defined(__cplusplus) || defined(__STDC__)
static int yygrowstack(void)
@@ -1034,127 +1033,127 @@ yyreduce:
switch (yyn)
{
case 1:
#line 193 "gram.y"
#line 192 "gram.y"
{ ; }
break;
case 5:
#line 201 "gram.y"
#line 200 "gram.y"
{
;
}
break;
case 6:
#line 204 "gram.y"
#line 203 "gram.y"
{
yyerrok;
}
break;
case 7:
#line 207 "gram.y"
#line 206 "gram.y"
{
add_userspec(yyvsp[-1].member, yyvsp[0].privilege);
}
break;
case 8:
#line 210 "gram.y"
#line 209 "gram.y"
{
;
}
break;
case 9:
#line 213 "gram.y"
#line 212 "gram.y"
{
;
}
break;
case 10:
#line 216 "gram.y"
#line 215 "gram.y"
{
;
}
break;
case 11:
#line 219 "gram.y"
#line 218 "gram.y"
{
;
}
break;
case 12:
#line 222 "gram.y"
#line 221 "gram.y"
{
add_defaults(DEFAULTS, NULL, yyvsp[0].defaults);
}
break;
case 13:
#line 225 "gram.y"
#line 224 "gram.y"
{
add_defaults(DEFAULTS_USER, yyvsp[-1].member, yyvsp[0].defaults);
}
break;
case 14:
#line 228 "gram.y"
#line 227 "gram.y"
{
add_defaults(DEFAULTS_RUNAS, yyvsp[-1].member, yyvsp[0].defaults);
}
break;
case 15:
#line 231 "gram.y"
#line 230 "gram.y"
{
add_defaults(DEFAULTS_HOST, yyvsp[-1].member, yyvsp[0].defaults);
}
break;
case 16:
#line 234 "gram.y"
#line 233 "gram.y"
{
add_defaults(DEFAULTS_CMND, yyvsp[-1].member, yyvsp[0].defaults);
}
break;
case 18:
#line 240 "gram.y"
#line 239 "gram.y"
{
list_append(yyvsp[-2].defaults, yyvsp[0].defaults);
yyval.defaults = yyvsp[-2].defaults;
}
break;
case 19:
#line 246 "gram.y"
#line 245 "gram.y"
{
yyval.defaults = new_default(yyvsp[0].string, NULL, TRUE);
yyval.defaults = new_default(yyvsp[0].string, NULL, true);
}
break;
case 20:
#line 249 "gram.y"
#line 248 "gram.y"
{
yyval.defaults = new_default(yyvsp[0].string, NULL, FALSE);
yyval.defaults = new_default(yyvsp[0].string, NULL, false);
}
break;
case 21:
#line 252 "gram.y"
#line 251 "gram.y"
{
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, TRUE);
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, true);
}
break;
case 22:
#line 255 "gram.y"
#line 254 "gram.y"
{
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '+');
}
break;
case 23:
#line 258 "gram.y"
#line 257 "gram.y"
{
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '-');
}
break;
case 25:
#line 264 "gram.y"
#line 263 "gram.y"
{
list_append(yyvsp[-2].privilege, yyvsp[0].privilege);
yyval.privilege = yyvsp[-2].privilege;
}
break;
case 26:
#line 270 "gram.y"
#line 269 "gram.y"
{
struct privilege *p = emalloc(sizeof(*p));
list2tq(&p->hostlist, yyvsp[-2].member);
@@ -1165,51 +1164,51 @@ case 26:
}
break;
case 27:
#line 280 "gram.y"
#line 279 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = FALSE;
yyval.member->negated = false;
}
break;
case 28:
#line 284 "gram.y"
#line 283 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = TRUE;
yyval.member->negated = true;
}
break;
case 29:
#line 290 "gram.y"
#line 289 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
}
break;
case 30:
#line 293 "gram.y"
#line 292 "gram.y"
{
yyval.member = new_member(NULL, ALL);
}
break;
case 31:
#line 296 "gram.y"
#line 295 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, NETGROUP);
}
break;
case 32:
#line 299 "gram.y"
#line 298 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, NTWKADDR);
}
break;
case 33:
#line 302 "gram.y"
#line 301 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, WORD);
}
break;
case 35:
#line 308 "gram.y"
#line 307 "gram.y"
{
list_append(yyvsp[-2].cmndspec, yyvsp[0].cmndspec);
#ifdef HAVE_SELINUX
@@ -1242,7 +1241,7 @@ case 35:
}
break;
case 36:
#line 340 "gram.y"
#line 339 "gram.y"
{
struct cmndspec *cs = emalloc(sizeof(*cs));
if (yyvsp[-3].runas != NULL) {
@@ -1269,80 +1268,80 @@ case 36:
}
break;
case 37:
#line 366 "gram.y"
#line 365 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = FALSE;
yyval.member->negated = false;
}
break;
case 38:
#line 370 "gram.y"
#line 369 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = TRUE;
yyval.member->negated = true;
}
break;
case 39:
#line 376 "gram.y"
#line 375 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 40:
#line 381 "gram.y"
#line 380 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 41:
#line 386 "gram.y"
#line 385 "gram.y"
{
yyval.seinfo.role = NULL;
yyval.seinfo.type = NULL;
}
break;
case 42:
#line 390 "gram.y"
#line 389 "gram.y"
{
yyval.seinfo.role = yyvsp[0].string;
yyval.seinfo.type = NULL;
}
break;
case 43:
#line 394 "gram.y"
#line 393 "gram.y"
{
yyval.seinfo.type = yyvsp[0].string;
yyval.seinfo.role = NULL;
}
break;
case 44:
#line 398 "gram.y"
#line 397 "gram.y"
{
yyval.seinfo.role = yyvsp[-1].string;
yyval.seinfo.type = yyvsp[0].string;
}
break;
case 45:
#line 402 "gram.y"
#line 401 "gram.y"
{
yyval.seinfo.type = yyvsp[-1].string;
yyval.seinfo.role = yyvsp[0].string;
}
break;
case 46:
#line 408 "gram.y"
#line 407 "gram.y"
{
yyval.runas = NULL;
}
break;
case 47:
#line 411 "gram.y"
#line 410 "gram.y"
{
yyval.runas = yyvsp[-1].runas;
}
break;
case 48:
#line 416 "gram.y"
#line 415 "gram.y"
{
yyval.runas = emalloc(sizeof(struct runascontainer));
yyval.runas->runasusers = yyvsp[0].member;
@@ -1350,7 +1349,7 @@ case 48:
}
break;
case 49:
#line 421 "gram.y"
#line 420 "gram.y"
{
yyval.runas = emalloc(sizeof(struct runascontainer));
yyval.runas->runasusers = yyvsp[-2].member;
@@ -1358,7 +1357,7 @@ case 49:
}
break;
case 50:
#line 426 "gram.y"
#line 425 "gram.y"
{
yyval.runas = emalloc(sizeof(struct runascontainer));
yyval.runas->runasusers = NULL;
@@ -1366,86 +1365,86 @@ case 50:
}
break;
case 51:
#line 433 "gram.y"
#line 432 "gram.y"
{
yyval.tag.nopasswd = yyval.tag.noexec = yyval.tag.setenv =
yyval.tag.log_input = yyval.tag.log_output = UNSPEC;
}
break;
case 52:
#line 437 "gram.y"
#line 436 "gram.y"
{
yyval.tag.nopasswd = TRUE;
yyval.tag.nopasswd = true;
}
break;
case 53:
#line 440 "gram.y"
#line 439 "gram.y"
{
yyval.tag.nopasswd = FALSE;
yyval.tag.nopasswd = false;
}
break;
case 54:
#line 443 "gram.y"
#line 442 "gram.y"
{
yyval.tag.noexec = TRUE;
yyval.tag.noexec = true;
}
break;
case 55:
#line 446 "gram.y"
#line 445 "gram.y"
{
yyval.tag.noexec = FALSE;
yyval.tag.noexec = false;
}
break;
case 56:
#line 449 "gram.y"
#line 448 "gram.y"
{
yyval.tag.setenv = TRUE;
yyval.tag.setenv = true;
}
break;
case 57:
#line 452 "gram.y"
#line 451 "gram.y"
{
yyval.tag.setenv = FALSE;
yyval.tag.setenv = false;
}
break;
case 58:
#line 455 "gram.y"
#line 454 "gram.y"
{
yyval.tag.log_input = TRUE;
yyval.tag.log_input = true;
}
break;
case 59:
#line 458 "gram.y"
#line 457 "gram.y"
{
yyval.tag.log_input = FALSE;
yyval.tag.log_input = false;
}
break;
case 60:
#line 461 "gram.y"
#line 460 "gram.y"
{
yyval.tag.log_output = TRUE;
yyval.tag.log_output = true;
}
break;
case 61:
#line 464 "gram.y"
#line 463 "gram.y"
{
yyval.tag.log_output = FALSE;
yyval.tag.log_output = false;
}
break;
case 62:
#line 469 "gram.y"
#line 468 "gram.y"
{
yyval.member = new_member(NULL, ALL);
}
break;
case 63:
#line 472 "gram.y"
#line 471 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
}
break;
case 64:
#line 475 "gram.y"
#line 474 "gram.y"
{
struct sudo_command *c = emalloc(sizeof(*c));
c->cmnd = yyvsp[0].command.cmnd;
@@ -1454,7 +1453,7 @@ case 64:
}
break;
case 67:
#line 487 "gram.y"
#line 486 "gram.y"
{
char *s;
if ((s = alias_add(yyvsp[-2].string, HOSTALIAS, yyvsp[0].member)) != NULL) {
@@ -1464,14 +1463,14 @@ case 67:
}
break;
case 69:
#line 497 "gram.y"
#line 496 "gram.y"
{
list_append(yyvsp[-2].member, yyvsp[0].member);
yyval.member = yyvsp[-2].member;
}
break;
case 72:
#line 507 "gram.y"
#line 506 "gram.y"
{
char *s;
if ((s = alias_add(yyvsp[-2].string, CMNDALIAS, yyvsp[0].member)) != NULL) {
@@ -1481,14 +1480,14 @@ case 72:
}
break;
case 74:
#line 517 "gram.y"
#line 516 "gram.y"
{
list_append(yyvsp[-2].member, yyvsp[0].member);
yyval.member = yyvsp[-2].member;
}
break;
case 77:
#line 527 "gram.y"
#line 526 "gram.y"
{
char *s;
if ((s = alias_add(yyvsp[-2].string, RUNASALIAS, yyvsp[0].member)) != NULL) {
@@ -1498,7 +1497,7 @@ case 77:
}
break;
case 80:
#line 540 "gram.y"
#line 539 "gram.y"
{
char *s;
if ((s = alias_add(yyvsp[-2].string, USERALIAS, yyvsp[0].member)) != NULL) {
@@ -1508,96 +1507,96 @@ case 80:
}
break;
case 82:
#line 550 "gram.y"
#line 549 "gram.y"
{
list_append(yyvsp[-2].member, yyvsp[0].member);
yyval.member = yyvsp[-2].member;
}
break;
case 83:
#line 556 "gram.y"
#line 555 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = FALSE;
yyval.member->negated = false;
}
break;
case 84:
#line 560 "gram.y"
#line 559 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = TRUE;
yyval.member->negated = true;
}
break;
case 85:
#line 566 "gram.y"
#line 565 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
}
break;
case 86:
#line 569 "gram.y"
#line 568 "gram.y"
{
yyval.member = new_member(NULL, ALL);
}
break;
case 87:
#line 572 "gram.y"
#line 571 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, NETGROUP);
}
break;
case 88:
#line 575 "gram.y"
#line 574 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, USERGROUP);
}
break;
case 89:
#line 578 "gram.y"
#line 577 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, WORD);
}
break;
case 91:
#line 584 "gram.y"
#line 583 "gram.y"
{
list_append(yyvsp[-2].member, yyvsp[0].member);
yyval.member = yyvsp[-2].member;
}
break;
case 92:
#line 590 "gram.y"
#line 589 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = FALSE;
yyval.member->negated = false;
}
break;
case 93:
#line 594 "gram.y"
#line 593 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = TRUE;
yyval.member->negated = true;
}
break;
case 94:
#line 600 "gram.y"
#line 599 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
}
break;
case 95:
#line 603 "gram.y"
#line 602 "gram.y"
{
yyval.member = new_member(NULL, ALL);
}
break;
case 96:
#line 606 "gram.y"
#line 605 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, WORD);
}
break;
#line 1548 "y.tab.c"
#line 1547 "y.tab.c"
}
yyssp -= yym;
yystate = *yyssp;

View File

@@ -73,9 +73,8 @@
extern int sudolineno;
extern int last_token;
extern char *sudoers;
static int verbose = FALSE;
int parse_error = FALSE;
int pedantic = FALSE;
static bool verbose = false;
bool parse_error = false;
int errorlineno = -1;
char *errorfile = NULL;
@@ -110,7 +109,7 @@ yyerror(const char *s)
} else if (verbose && s != NULL) {
warningx(_(">>> %s: %s near line %d <<<"), sudoers, s, sudolineno);
}
parse_error = TRUE;
parse_error = true;
debug_return;
}
%}
@@ -244,13 +243,13 @@ defaults_list : defaults_entry
;
defaults_entry : DEFVAR {
$$ = new_default($1, NULL, TRUE);
$$ = new_default($1, NULL, true);
}
| '!' DEFVAR {
$$ = new_default($2, NULL, FALSE);
$$ = new_default($2, NULL, false);
}
| DEFVAR '=' WORD {
$$ = new_default($1, $3, TRUE);
$$ = new_default($1, $3, true);
}
| DEFVAR '+' WORD {
$$ = new_default($1, $3, '+');
@@ -279,11 +278,11 @@ privilege : hostlist '=' cmndspeclist {
ophost : host {
$$ = $1;
$$->negated = FALSE;
$$->negated = false;
}
| '!' host {
$$ = $2;
$$->negated = TRUE;
$$->negated = true;
}
;
@@ -365,11 +364,11 @@ cmndspec : runasspec selinux cmndtag opcmnd {
opcmnd : cmnd {
$$ = $1;
$$->negated = FALSE;
$$->negated = false;
}
| '!' cmnd {
$$ = $2;
$$->negated = TRUE;
$$->negated = true;
}
;
@@ -435,34 +434,34 @@ cmndtag : /* empty */ {
$$.log_input = $$.log_output = UNSPEC;
}
| cmndtag NOPASSWD {
$$.nopasswd = TRUE;
$$.nopasswd = true;
}
| cmndtag PASSWD {
$$.nopasswd = FALSE;
$$.nopasswd = false;
}
| cmndtag NOEXEC {
$$.noexec = TRUE;
$$.noexec = true;
}
| cmndtag EXEC {
$$.noexec = FALSE;
$$.noexec = false;
}
| cmndtag SETENV {
$$.setenv = TRUE;
$$.setenv = true;
}
| cmndtag NOSETENV {
$$.setenv = FALSE;
$$.setenv = false;
}
| cmndtag LOG_INPUT {
$$.log_input = TRUE;
$$.log_input = true;
}
| cmndtag NOLOG_INPUT {
$$.log_input = FALSE;
$$.log_input = false;
}
| cmndtag LOG_OUTPUT {
$$.log_output = TRUE;
$$.log_output = true;
}
| cmndtag NOLOG_OUTPUT {
$$.log_output = FALSE;
$$.log_output = false;
}
;
@@ -555,11 +554,11 @@ userlist : opuser
opuser : user {
$$ = $1;
$$->negated = FALSE;
$$->negated = false;
}
| '!' user {
$$ = $2;
$$->negated = TRUE;
$$->negated = true;
}
;
@@ -589,11 +588,11 @@ grouplist : opgroup
opgroup : group {
$$ = $1;
$$->negated = FALSE;
$$->negated = false;
}
| '!' group {
$$ = $2;
$$->negated = TRUE;
$$->negated = true;
}
;
@@ -790,7 +789,7 @@ init_parser(const char *path, int quiet)
efree(sudoers);
sudoers = path ? estrdup(path) : NULL;
parse_error = FALSE;
parse_error = false;
errorlineno = -1;
errorfile = NULL;
verbose = !quiet;

View File

@@ -131,14 +131,15 @@ group_plugin_load(char *plugin_info)
* Split args into a vector if specified.
*/
if (args != NULL) {
int ac = 0, wasblank = TRUE;
int ac = 0;
bool wasblank = true;
char *cp;
for (cp = args; *cp != '\0'; cp++) {
if (isblank((unsigned char)*cp)) {
wasblank = TRUE;
wasblank = true;
} else if (wasblank) {
wasblank = FALSE;
wasblank = false;
ac++;
}
}
@@ -155,7 +156,7 @@ group_plugin_load(char *plugin_info)
done:
efree(argv);
if (rc != TRUE) {
if (rc != true) {
if (group_handle != NULL) {
dlclose(group_handle);
group_handle = NULL;
@@ -189,7 +190,7 @@ group_plugin_query(const char *user, const char *group,
debug_decl(group_plugin_query, SUDO_DEBUG_UTIL)
if (group_plugin == NULL)
debug_return_bool(FALSE);
debug_return_bool(false);
debug_return_bool((group_plugin->query)(user, group, pwd));
}
@@ -203,7 +204,7 @@ int
group_plugin_load(char *plugin_info)
{
debug_decl(group_plugin_load, SUDO_DEBUG_UTIL)
debug_return_bool(FALSE);
debug_return_bool(false);
}
void
@@ -218,7 +219,7 @@ group_plugin_query(const char *user, const char *group,
const struct passwd *pwd)
{
debug_decl(group_plugin_query, SUDO_DEBUG_UTIL)
debug_return_bool(FALSE);
debug_return_bool(false);
}
#endif /* HAVE_DLOPEN || HAVE_SHL_LOAD */

View File

@@ -240,11 +240,11 @@ mkdir_iopath(const char *iolog_path, char *pathbuf, size_t pathsize)
/*
* Append suffix to pathbuf after len chars and open the resulting file.
* Note that the size of pathbuf is assumed to be PATH_MAX.
* Uses zlib if docompress is TRUE.
* Uses zlib if docompress is true.
* Returns the open file handle which has the close-on-exec flag set.
*/
static void *
open_io_fd(char *pathbuf, size_t len, const char *suffix, int docompress)
open_io_fd(char *pathbuf, size_t len, const char *suffix, bool docompress)
{
void *vfd = NULL;
int fd;
@@ -320,33 +320,33 @@ iolog_deserialize_info(struct iolog_details *details, char * const user_info[],
continue;
}
if (strncmp(*cur, "iolog_stdin=", sizeof("iolog_stdin=") - 1) == 0) {
if (atobool(*cur + sizeof("iolog_stdin=") - 1) == TRUE)
details->iolog_stdin = TRUE;
if (atobool(*cur + sizeof("iolog_stdin=") - 1) == true)
details->iolog_stdin = true;
continue;
}
if (strncmp(*cur, "iolog_stdout=", sizeof("iolog_stdout=") - 1) == 0) {
if (atobool(*cur + sizeof("iolog_stdout=") - 1) == TRUE)
details->iolog_stdout = TRUE;
if (atobool(*cur + sizeof("iolog_stdout=") - 1) == true)
details->iolog_stdout = true;
continue;
}
if (strncmp(*cur, "iolog_stderr=", sizeof("iolog_stderr=") - 1) == 0) {
if (atobool(*cur + sizeof("iolog_stderr=") - 1) == TRUE)
details->iolog_stderr = TRUE;
if (atobool(*cur + sizeof("iolog_stderr=") - 1) == true)
details->iolog_stderr = true;
continue;
}
if (strncmp(*cur, "iolog_ttyin=", sizeof("iolog_ttyin=") - 1) == 0) {
if (atobool(*cur + sizeof("iolog_ttyin=") - 1) == TRUE)
details->iolog_ttyin = TRUE;
if (atobool(*cur + sizeof("iolog_ttyin=") - 1) == true)
details->iolog_ttyin = true;
continue;
}
if (strncmp(*cur, "iolog_ttyout=", sizeof("iolog_ttyout=") - 1) == 0) {
if (atobool(*cur + sizeof("iolog_ttyout=") - 1) == TRUE)
details->iolog_ttyout = TRUE;
if (atobool(*cur + sizeof("iolog_ttyout=") - 1) == true)
details->iolog_ttyout = true;
continue;
}
if (strncmp(*cur, "iolog_compress=", sizeof("iolog_compress=") - 1) == 0) {
if (atobool(*cur + sizeof("iolog_compress=") - 1) == TRUE)
iolog_compress = TRUE; /* must be global */
if (atobool(*cur + sizeof("iolog_compress=") - 1) == true)
iolog_compress = true; /* must be global */
continue;
}
break;
@@ -435,7 +435,7 @@ sudoers_io_open(unsigned int version, sudo_conv_t conversation,
/* If we have no command (because -V was specified) just return. */
if (argc == 0)
debug_return_bool(TRUE);
debug_return_bool(true);
if (sigsetjmp(error_jmp, 1)) {
/* called via error(), errorx() or log_error() */
@@ -456,7 +456,7 @@ sudoers_io_open(unsigned int version, sudo_conv_t conversation,
if (!details.iolog_stdin && !details.iolog_ttyin &&
!details.iolog_stdout && !details.iolog_stderr &&
!details.iolog_ttyout) {
rval = FALSE;
rval = false;
goto done;
}
@@ -483,7 +483,7 @@ sudoers_io_open(unsigned int version, sudo_conv_t conversation,
/*
* We create 7 files: a log file, a timing file and 5 for input/output.
*/
io_logfile = open_io_fd(pathbuf, len, "/log", FALSE);
io_logfile = open_io_fd(pathbuf, len, "/log", false);
if (io_logfile == NULL)
log_error(USE_ERRNO, _("unable to create %s"), pathbuf);
@@ -549,7 +549,7 @@ sudoers_io_open(unsigned int version, sudo_conv_t conversation,
fputc('\n', io_logfile);
fclose(io_logfile);
rval = TRUE;
rval = true;
done:
efree(tofree);
@@ -600,7 +600,7 @@ sudoers_io_version(int verbose)
sudo_printf(SUDO_CONV_INFO_MSG, "Sudoers I/O plugin version %s\n",
PACKAGE_VERSION);
debug_return_bool(TRUE);
debug_return_bool(true);
}
/*
@@ -639,7 +639,7 @@ sudoers_io_log(const char *buf, unsigned int len, int idx)
last_time.tv_sec = now.tv_sec;
last_time.tv_usec = now.tv_usec;
debug_return_bool(TRUE);
debug_return_bool(true);
}
static int

View File

@@ -166,7 +166,8 @@ expand_iolog_path(const char *prefix, const char *dir, const char *file,
size_t len, prelen = 0;
char *dst, *dst0, *path, *pathend, tmpbuf[PATH_MAX];
const char *endbrace, *src = dir;
int pass, strfit;
int pass;
bool strfit;
debug_decl(expand_iolog_path, SUDO_DEBUG_UTIL)
/* Expanded path must be <= PATH_MAX */
@@ -188,7 +189,7 @@ expand_iolog_path(const char *prefix, const char *dir, const char *file,
file++;
for (pass = 0; pass < 3; pass++) {
strfit = FALSE;
strfit = false;
switch (pass) {
case 0:
src = dir;

View File

@@ -223,90 +223,90 @@ static struct ldap_config {
} ldap_conf;
static struct ldap_config_table ldap_conf_table[] = {
{ "sudoers_debug", CONF_INT, FALSE, -1, &ldap_conf.debug },
{ "host", CONF_STR, FALSE, -1, &ldap_conf.host },
{ "port", CONF_INT, FALSE, -1, &ldap_conf.port },
{ "ssl", CONF_STR, FALSE, -1, &ldap_conf.ssl },
{ "sslpath", CONF_STR, FALSE, -1, &ldap_conf.tls_certfile },
{ "uri", CONF_LIST_STR, FALSE, -1, &ldap_conf.uri },
{ "sudoers_debug", CONF_INT, false, -1, &ldap_conf.debug },
{ "host", CONF_STR, false, -1, &ldap_conf.host },
{ "port", CONF_INT, false, -1, &ldap_conf.port },
{ "ssl", CONF_STR, false, -1, &ldap_conf.ssl },
{ "sslpath", CONF_STR, false, -1, &ldap_conf.tls_certfile },
{ "uri", CONF_LIST_STR, false, -1, &ldap_conf.uri },
#ifdef LDAP_OPT_DEBUG_LEVEL
{ "debug", CONF_INT, FALSE, LDAP_OPT_DEBUG_LEVEL, &ldap_conf.ldap_debug },
{ "debug", CONF_INT, false, LDAP_OPT_DEBUG_LEVEL, &ldap_conf.ldap_debug },
#endif
#ifdef LDAP_OPT_PROTOCOL_VERSION
{ "ldap_version", CONF_INT, TRUE, LDAP_OPT_PROTOCOL_VERSION,
{ "ldap_version", CONF_INT, true, LDAP_OPT_PROTOCOL_VERSION,
&ldap_conf.version },
#endif
#ifdef LDAP_OPT_X_TLS_REQUIRE_CERT
{ "tls_checkpeer", CONF_BOOL, FALSE, LDAP_OPT_X_TLS_REQUIRE_CERT,
{ "tls_checkpeer", CONF_BOOL, false, LDAP_OPT_X_TLS_REQUIRE_CERT,
&ldap_conf.tls_checkpeer },
#else
{ "tls_checkpeer", CONF_BOOL, FALSE, -1, &ldap_conf.tls_checkpeer },
{ "tls_checkpeer", CONF_BOOL, false, -1, &ldap_conf.tls_checkpeer },
#endif
#ifdef LDAP_OPT_X_TLS_CACERTFILE
{ "tls_cacertfile", CONF_STR, FALSE, LDAP_OPT_X_TLS_CACERTFILE,
{ "tls_cacertfile", CONF_STR, false, LDAP_OPT_X_TLS_CACERTFILE,
&ldap_conf.tls_cacertfile },
{ "tls_cacert", CONF_STR, FALSE, LDAP_OPT_X_TLS_CACERTFILE,
{ "tls_cacert", CONF_STR, false, LDAP_OPT_X_TLS_CACERTFILE,
&ldap_conf.tls_cacertfile },
#endif
#ifdef LDAP_OPT_X_TLS_CACERTDIR
{ "tls_cacertdir", CONF_STR, FALSE, LDAP_OPT_X_TLS_CACERTDIR,
{ "tls_cacertdir", CONF_STR, false, LDAP_OPT_X_TLS_CACERTDIR,
&ldap_conf.tls_cacertdir },
#endif
#ifdef LDAP_OPT_X_TLS_RANDOM_FILE
{ "tls_randfile", CONF_STR, FALSE, LDAP_OPT_X_TLS_RANDOM_FILE,
{ "tls_randfile", CONF_STR, false, LDAP_OPT_X_TLS_RANDOM_FILE,
&ldap_conf.tls_random_file },
#endif
#ifdef LDAP_OPT_X_TLS_CIPHER_SUITE
{ "tls_ciphers", CONF_STR, FALSE, LDAP_OPT_X_TLS_CIPHER_SUITE,
{ "tls_ciphers", CONF_STR, false, LDAP_OPT_X_TLS_CIPHER_SUITE,
&ldap_conf.tls_cipher_suite },
#endif
#ifdef LDAP_OPT_X_TLS_CERTFILE
{ "tls_cert", CONF_STR, FALSE, LDAP_OPT_X_TLS_CERTFILE,
{ "tls_cert", CONF_STR, false, LDAP_OPT_X_TLS_CERTFILE,
&ldap_conf.tls_certfile },
#else
{ "tls_cert", CONF_STR, FALSE, -1, &ldap_conf.tls_certfile },
{ "tls_cert", CONF_STR, false, -1, &ldap_conf.tls_certfile },
#endif
#ifdef LDAP_OPT_X_TLS_KEYFILE
{ "tls_key", CONF_STR, FALSE, LDAP_OPT_X_TLS_KEYFILE,
{ "tls_key", CONF_STR, false, LDAP_OPT_X_TLS_KEYFILE,
&ldap_conf.tls_keyfile },
#else
{ "tls_key", CONF_STR, FALSE, -1, &ldap_conf.tls_keyfile },
{ "tls_key", CONF_STR, false, -1, &ldap_conf.tls_keyfile },
#endif
#ifdef LDAP_OPT_NETWORK_TIMEOUT
{ "bind_timelimit", CONF_INT, TRUE, -1 /* needs timeval, set manually */,
{ "bind_timelimit", CONF_INT, true, -1 /* needs timeval, set manually */,
&ldap_conf.bind_timelimit },
{ "network_timeout", CONF_INT, TRUE, -1 /* needs timeval, set manually */,
{ "network_timeout", CONF_INT, true, -1 /* needs timeval, set manually */,
&ldap_conf.bind_timelimit },
#elif defined(LDAP_X_OPT_CONNECT_TIMEOUT)
{ "bind_timelimit", CONF_INT, TRUE, LDAP_X_OPT_CONNECT_TIMEOUT,
{ "bind_timelimit", CONF_INT, true, LDAP_X_OPT_CONNECT_TIMEOUT,
&ldap_conf.bind_timelimit },
{ "network_timeout", CONF_INT, TRUE, LDAP_X_OPT_CONNECT_TIMEOUT,
{ "network_timeout", CONF_INT, true, LDAP_X_OPT_CONNECT_TIMEOUT,
&ldap_conf.bind_timelimit },
#endif
{ "timelimit", CONF_INT, TRUE, LDAP_OPT_TIMELIMIT, &ldap_conf.timelimit },
{ "timelimit", CONF_INT, true, LDAP_OPT_TIMELIMIT, &ldap_conf.timelimit },
#ifdef LDAP_OPT_TIMEOUT
{ "timeout", CONF_INT, TRUE, -1 /* needs timeval, set manually */,
{ "timeout", CONF_INT, true, -1 /* needs timeval, set manually */,
&ldap_conf.timeout },
#endif
#ifdef LDAP_OPT_DEREF
{ "deref", CONF_DEREF_VAL, TRUE, LDAP_OPT_DEREF, &ldap_conf.deref },
{ "deref", CONF_DEREF_VAL, true, LDAP_OPT_DEREF, &ldap_conf.deref },
#endif
{ "binddn", CONF_STR, FALSE, -1, &ldap_conf.binddn },
{ "bindpw", CONF_STR, FALSE, -1, &ldap_conf.bindpw },
{ "rootbinddn", CONF_STR, FALSE, -1, &ldap_conf.rootbinddn },
{ "sudoers_base", CONF_LIST_STR, FALSE, -1, &ldap_conf.base },
{ "sudoers_timed", CONF_BOOL, FALSE, -1, &ldap_conf.timed },
{ "sudoers_search_filter", CONF_STR, FALSE, -1, &ldap_conf.search_filter },
{ "binddn", CONF_STR, false, -1, &ldap_conf.binddn },
{ "bindpw", CONF_STR, false, -1, &ldap_conf.bindpw },
{ "rootbinddn", CONF_STR, false, -1, &ldap_conf.rootbinddn },
{ "sudoers_base", CONF_LIST_STR, false, -1, &ldap_conf.base },
{ "sudoers_timed", CONF_BOOL, false, -1, &ldap_conf.timed },
{ "sudoers_search_filter", CONF_STR, false, -1, &ldap_conf.search_filter },
#ifdef HAVE_LDAP_SASL_INTERACTIVE_BIND_S
{ "use_sasl", CONF_BOOL, FALSE, -1, &ldap_conf.use_sasl },
{ "sasl_auth_id", CONF_STR, FALSE, -1, &ldap_conf.sasl_auth_id },
{ "rootuse_sasl", CONF_BOOL, FALSE, -1, &ldap_conf.rootuse_sasl },
{ "rootsasl_auth_id", CONF_STR, FALSE, -1, &ldap_conf.rootsasl_auth_id },
{ "use_sasl", CONF_BOOL, false, -1, &ldap_conf.use_sasl },
{ "sasl_auth_id", CONF_STR, false, -1, &ldap_conf.sasl_auth_id },
{ "rootuse_sasl", CONF_BOOL, false, -1, &ldap_conf.rootuse_sasl },
{ "rootsasl_auth_id", CONF_STR, false, -1, &ldap_conf.rootsasl_auth_id },
# ifdef LDAP_OPT_X_SASL_SECPROPS
{ "sasl_secprops", CONF_STR, TRUE, LDAP_OPT_X_SASL_SECPROPS,
{ "sasl_secprops", CONF_STR, true, LDAP_OPT_X_SASL_SECPROPS,
&ldap_conf.sasl_secprops },
# endif
{ "krb5_ccname", CONF_STR, FALSE, -1, &ldap_conf.krb5_ccname },
{ "krb5_ccname", CONF_STR, false, -1, &ldap_conf.krb5_ccname },
#endif /* HAVE_LDAP_SASL_INTERACTIVE_BIND_S */
{ NULL }
};
@@ -578,59 +578,59 @@ done:
}
/*
* Walk through search results and return TRUE if we have a matching
* netgroup, else FALSE.
* Walk through search results and return true if we have a matching
* netgroup, else false.
*/
static int
static bool
sudo_ldap_check_user_netgroup(LDAP *ld, LDAPMessage *entry, char *user)
{
struct berval **bv, **p;
char *val;
int ret = FALSE;
int ret = false;
debug_decl(sudo_ldap_check_user_netgroup, SUDO_DEBUG_LDAP)
if (!entry)
debug_return_int(ret);
debug_return_bool(ret);
/* get the values from the entry */
bv = ldap_get_values_len(ld, entry, "sudoUser");
if (bv == NULL)
debug_return_int(ret);
debug_return_bool(ret);
/* walk through values */
for (p = bv; *p != NULL && !ret; p++) {
val = (*p)->bv_val;
/* match any */
if (netgr_matches(val, NULL, NULL, user))
ret = TRUE;
ret = true;
DPRINTF(("ldap sudoUser netgroup '%s' ... %s", val,
ret ? "MATCH!" : "not"), 2 + ((ret) ? 0 : 1));
}
ldap_value_free_len(bv); /* cleanup */
debug_return_int(ret);
debug_return_bool(ret);
}
/*
* Walk through search results and return TRUE if we have a
* host match, else FALSE.
* Walk through search results and return true if we have a
* host match, else false.
*/
static int
static bool
sudo_ldap_check_host(LDAP *ld, LDAPMessage *entry)
{
struct berval **bv, **p;
char *val;
int ret = FALSE;
bool ret = false;
debug_decl(sudo_ldap_check_host, SUDO_DEBUG_LDAP)
if (!entry)
debug_return_int(ret);
debug_return_bool(ret);
/* get the values from the entry */
bv = ldap_get_values_len(ld, entry, "sudoHost");
if (bv == NULL)
debug_return_int(ret);
debug_return_bool(ret);
/* walk through values */
for (p = bv; *p != NULL && !ret; p++) {
@@ -639,14 +639,14 @@ sudo_ldap_check_host(LDAP *ld, LDAPMessage *entry)
if (!strcmp(val, "ALL") || addr_matches(val) ||
netgr_matches(val, user_host, user_shost, NULL) ||
hostname_matches(user_shost, user_host, val))
ret = TRUE;
ret = true;
DPRINTF(("ldap sudoHost '%s' ... %s", val,
ret ? "MATCH!" : "not"), 2);
}
ldap_value_free_len(bv); /* cleanup */
debug_return_int(ret);
debug_return_bool(ret);
}
static int
@@ -654,11 +654,11 @@ sudo_ldap_check_runas_user(LDAP *ld, LDAPMessage *entry)
{
struct berval **bv, **p;
char *val;
int ret = FALSE;
bool ret = false;
debug_decl(sudo_ldap_check_runas_user, SUDO_DEBUG_LDAP)
if (!runas_pw)
debug_return_int(UNSPEC);
debug_return_bool(UNSPEC);
/* get the runas user from the entry */
bv = ldap_get_values_len(ld, entry, "sudoRunAsUser");
@@ -687,7 +687,7 @@ sudo_ldap_check_runas_user(LDAP *ld, LDAPMessage *entry)
* what the user specified on the command line.
*/
if (bv == NULL)
debug_return_int(!strcasecmp(runas_pw->pw_name, def_runas_default));
debug_return_bool(!strcasecmp(runas_pw->pw_name, def_runas_default));
/* walk through values returned, looking for a match */
for (p = bv; *p != NULL && !ret; p++) {
@@ -695,21 +695,21 @@ sudo_ldap_check_runas_user(LDAP *ld, LDAPMessage *entry)
switch (val[0]) {
case '+':
if (netgr_matches(val, NULL, NULL, runas_pw->pw_name))
ret = TRUE;
ret = true;
break;
case '%':
if (usergr_matches(val, runas_pw->pw_name, runas_pw))
ret = TRUE;
ret = true;
break;
case 'A':
if (strcmp(val, "ALL") == 0) {
ret = TRUE;
ret = true;
break;
}
/* FALLTHROUGH */
default:
if (strcasecmp(val, runas_pw->pw_name) == 0)
ret = TRUE;
ret = true;
break;
}
DPRINTF(("ldap sudoRunAsUser '%s' ... %s", val,
@@ -718,7 +718,7 @@ sudo_ldap_check_runas_user(LDAP *ld, LDAPMessage *entry)
ldap_value_free_len(bv); /* cleanup */
debug_return_int(ret);
debug_return_bool(ret);
}
static int
@@ -726,61 +726,62 @@ sudo_ldap_check_runas_group(LDAP *ld, LDAPMessage *entry)
{
struct berval **bv, **p;
char *val;
int ret = FALSE;
bool ret = false;
debug_decl(sudo_ldap_check_runas_group, SUDO_DEBUG_LDAP)
/* runas_gr is only set if the user specified the -g flag */
if (!runas_gr)
debug_return_int(UNSPEC);
debug_return_bool(UNSPEC);
/* get the values from the entry */
bv = ldap_get_values_len(ld, entry, "sudoRunAsGroup");
if (bv == NULL)
debug_return_int(ret);
debug_return_bool(ret);
/* walk through values returned, looking for a match */
for (p = bv; *p != NULL && !ret; p++) {
val = (*p)->bv_val;
if (strcmp(val, "ALL") == 0 || group_matches(val, runas_gr))
ret = TRUE;
ret = true;
DPRINTF(("ldap sudoRunAsGroup '%s' ... %s", val,
ret ? "MATCH!" : "not"), 2);
}
ldap_value_free_len(bv); /* cleanup */
debug_return_int(ret);
debug_return_bool(ret);
}
/*
* Walk through search results and return TRUE if we have a runas match,
* else FALSE. RunAs info is optional.
* Walk through search results and return true if we have a runas match,
* else false. RunAs info is optional.
*/
static int
static bool
sudo_ldap_check_runas(LDAP *ld, LDAPMessage *entry)
{
int ret;
bool ret;
debug_decl(sudo_ldap_check_runas, SUDO_DEBUG_LDAP)
if (!entry)
debug_return_bool(FALSE);
debug_return_bool(false);
ret = sudo_ldap_check_runas_user(ld, entry) != FALSE &&
sudo_ldap_check_runas_group(ld, entry) != FALSE;
ret = sudo_ldap_check_runas_user(ld, entry) != false &&
sudo_ldap_check_runas_group(ld, entry) != false;
debug_return_bool(ret);
}
/*
* Walk through search results and return TRUE if we have a command match,
* FALSE if disallowed and UNSPEC if not matched.
* Walk through search results and return true if we have a command match,
* false if disallowed and UNSPEC if not matched.
*/
static int
sudo_ldap_check_command(LDAP *ld, LDAPMessage *entry, int *setenv_implied)
{
struct berval **bv, **p;
char *allowed_cmnd, *allowed_args, *val;
int foundbang, ret = UNSPEC;
bool foundbang;
int ret = UNSPEC;
debug_decl(sudo_ldap_check_command, SUDO_DEBUG_LDAP)
if (!entry)
@@ -790,23 +791,23 @@ sudo_ldap_check_command(LDAP *ld, LDAPMessage *entry, int *setenv_implied)
if (bv == NULL)
debug_return_bool(ret);
for (p = bv; *p != NULL && ret != FALSE; p++) {
for (p = bv; *p != NULL && ret != false; p++) {
val = (*p)->bv_val;
/* Match against ALL ? */
if (!strcmp(val, "ALL")) {
ret = TRUE;
ret = true;
if (setenv_implied != NULL)
*setenv_implied = TRUE;
*setenv_implied = true;
DPRINTF(("ldap sudoCommand '%s' ... MATCH!", val), 2);
continue;
}
/* check for !command */
if (*val == '!') {
foundbang = TRUE;
foundbang = true;
allowed_cmnd = estrdup(1 + val); /* !command */
} else {
foundbang = FALSE;
foundbang = false;
allowed_cmnd = estrdup(val); /* command */
}
@@ -821,10 +822,10 @@ sudo_ldap_check_command(LDAP *ld, LDAPMessage *entry, int *setenv_implied)
* If allowed (no bang) set ret but keep on checking.
* If disallowed (bang), exit loop.
*/
ret = foundbang ? FALSE : TRUE;
ret = foundbang ? false : true;
}
DPRINTF(("ldap sudoCommand '%s' ... %s", val,
ret == TRUE ? "MATCH!" : "not"), 2);
ret == true ? "MATCH!" : "not"), 2);
efree(allowed_cmnd); /* cleanup */
}
@@ -836,7 +837,7 @@ sudo_ldap_check_command(LDAP *ld, LDAPMessage *entry, int *setenv_implied)
/*
* Search for boolean "option" in sudoOption.
* Returns TRUE if found and allowed, FALSE if negated, else UNSPEC.
* Returns true if found and allowed, false if negated, else UNSPEC.
*/
static int
sudo_ldap_check_bool(LDAP *ld, LDAPMessage *entry, char *option)
@@ -903,14 +904,14 @@ sudo_ldap_parse_options(LDAP *ld, LDAPMessage *entry)
set_default(var, val, (int) op);
} else {
/* case var=val */
set_default(var, val, TRUE);
set_default(var, val, true);
}
} else if (*var == '!') {
/* case !var Boolean False */
set_default(var + 1, NULL, FALSE);
set_default(var + 1, NULL, false);
} else {
/* case var Boolean True */
set_default(var, NULL, TRUE);
set_default(var, NULL, true);
}
efree(var);
}
@@ -1152,7 +1153,7 @@ sudo_ldap_read_secret(const char *path)
debug_return;
}
static int
static bool
sudo_ldap_read_config(void)
{
FILE *fp;
@@ -1172,7 +1173,7 @@ sudo_ldap_read_config(void)
ldap_conf.deref = -1;
if ((fp = fopen(_PATH_LDAP_CONF, "r")) == NULL)
debug_return_bool(FALSE);
debug_return_bool(false);
while ((cp = sudo_parseln(fp)) != NULL) {
if (*cp == '\0')
@@ -1205,7 +1206,7 @@ sudo_ldap_read_config(void)
*(int *)(cur->valp) = LDAP_DEREF_NEVER;
break;
case CONF_BOOL:
*(int *)(cur->valp) = atobool(value) == TRUE;
*(int *)(cur->valp) = atobool(value) == true;
break;
case CONF_INT:
*(int *)(cur->valp) = atoi(value);
@@ -1337,7 +1338,7 @@ sudo_ldap_read_config(void)
sudo_printf(SUDO_CONV_ERROR_MSG, "===================\n");
}
if (!ldap_conf.base)
debug_return_bool(FALSE); /* if no base is defined, ignore LDAP */
debug_return_bool(false); /* if no base is defined, ignore LDAP */
if (ldap_conf.bind_timelimit > 0)
ldap_conf.bind_timelimit *= 1000; /* convert to ms */
@@ -1348,7 +1349,7 @@ sudo_ldap_read_config(void)
if (ldap_conf.ssl != NULL) {
if (strcasecmp(ldap_conf.ssl, "start_tls") == 0)
ldap_conf.ssl_mode = SUDO_LDAP_STARTTLS;
else if (atobool(ldap_conf.ssl) == TRUE)
else if (atobool(ldap_conf.ssl) == true)
ldap_conf.ssl_mode = SUDO_LDAP_SSL;
}
@@ -1364,7 +1365,7 @@ sudo_ldap_read_config(void)
if (ldap_conf.uri) {
struct ldap_config_list_str *uri = ldap_conf.uri;
if (sudo_ldap_parse_uri(uri) != 0)
debug_return_bool(FALSE);
debug_return_bool(false);
do {
ldap_conf.uri = uri->next;
efree(uri);
@@ -1426,7 +1427,7 @@ sudo_ldap_read_config(void)
}
}
#endif
debug_return_bool(TRUE);
debug_return_bool(true);
}
/*
@@ -1717,7 +1718,8 @@ sudo_ldap_display_cmnd(struct sudo_nss *nss, struct passwd *pw)
LDAP *ld;
struct ldap_result *lres;
LDAPMessage *entry;
int i, found = FALSE;
bool found = false;
int i;
debug_decl(sudo_ldap_display_cmnd, SUDO_DEBUG_LDAP)
if (handle == NULL || handle->ld == NULL)
@@ -1734,7 +1736,7 @@ sudo_ldap_display_cmnd(struct sudo_nss *nss, struct passwd *pw)
entry = lres->entries[i].entry;
if (sudo_ldap_check_command(ld, entry, NULL) &&
sudo_ldap_check_runas(ld, entry)) {
found = TRUE;
found = true;
goto done;
}
}
@@ -1892,8 +1894,8 @@ sudo_ldap_result_alloc(void)
result->nentries = 0;
result->entries = NULL;
result->allocated_entries = 0;
result->user_matches = FALSE;
result->host_matches = FALSE;
result->user_matches = false;
result->host_matches = false;
debug_return_ptr(result);
}
@@ -1965,8 +1967,8 @@ sudo_ldap_bind_s(LDAP *ld)
debug_decl(sudo_ldap_bind_s, SUDO_DEBUG_LDAP)
#ifdef HAVE_LDAP_SASL_INTERACTIVE_BIND_S
if (ldap_conf.rootuse_sasl == TRUE ||
(ldap_conf.rootuse_sasl != FALSE && ldap_conf.use_sasl == TRUE)) {
if (ldap_conf.rootuse_sasl == true ||
(ldap_conf.rootuse_sasl != false && ldap_conf.use_sasl == true)) {
void *auth_id = ldap_conf.rootsasl_auth_id ?
ldap_conf.rootsasl_auth_id : ldap_conf.sasl_auth_id;
@@ -1978,7 +1980,7 @@ sudo_ldap_bind_s(LDAP *ld)
DPRINTF(("gss_krb5_ccache_name() failed: %d", status), 1);
}
# else
setenv("KRB5CCNAME", ldap_conf.krb5_ccname, TRUE);
setenv("KRB5CCNAME", ldap_conf.krb5_ccname, true);
# endif
}
rc = ldap_sasl_interactive_bind_s(ld, ldap_conf.binddn, "GSSAPI",
@@ -1989,7 +1991,7 @@ sudo_ldap_bind_s(LDAP *ld)
DPRINTF(("gss_krb5_ccache_name() failed: %d", status), 1);
# else
if (old_ccname != NULL)
setenv("KRB5CCNAME", old_ccname, TRUE);
setenv("KRB5CCNAME", old_ccname, true);
else
unsetenv("KRB5CCNAME");
# endif
@@ -2038,7 +2040,8 @@ static int
sudo_ldap_open(struct sudo_nss *nss)
{
LDAP *ld;
int rc, ldapnoinit = FALSE;
int rc;
bool ldapnoinit = false;
struct sudo_ldap_handle *handle;
debug_decl(sudo_ldap_open, SUDO_DEBUG_LDAP)
@@ -2047,8 +2050,8 @@ sudo_ldap_open(struct sudo_nss *nss)
/* Prevent reading of user ldaprc and system defaults. */
if (getenv("LDAPNOINIT") == NULL) {
ldapnoinit = TRUE;
setenv("LDAPNOINIT", "1", TRUE);
ldapnoinit = true;
setenv("LDAPNOINIT", "1", true);
}
/* Connect to LDAP server */
@@ -2187,15 +2190,15 @@ sudo_ldap_lookup(struct sudo_nss *nss, int ret, int pwflag)
DPRINTF(("perform search for pwflag %d", pwflag), 1);
for (i = 0; i < lres->nentries; i++) {
entry = lres->entries[i].entry;
if ((pwcheck == any && doauth != FALSE) ||
(pwcheck == all && doauth == FALSE)) {
if ((pwcheck == any && doauth != false) ||
(pwcheck == all && doauth == false)) {
doauth = sudo_ldap_check_bool(ld, entry, "authenticate");
}
/* Only check the command when listing another user. */
if (user_uid == 0 || list_pw == NULL ||
user_uid == list_pw->pw_uid ||
sudo_ldap_check_command(ld, entry, NULL)) {
matched = TRUE;
matched = true;
break;
}
}
@@ -2209,11 +2212,11 @@ sudo_ldap_lookup(struct sudo_nss *nss, int ret, int pwflag)
break;
case all:
case any:
if (doauth == FALSE)
def_authenticate = FALSE;
if (doauth == false)
def_authenticate = false;
break;
case never:
def_authenticate = FALSE;
def_authenticate = false;
break;
default:
break;
@@ -2225,7 +2228,7 @@ sudo_ldap_lookup(struct sudo_nss *nss, int ret, int pwflag)
DPRINTF(("searching LDAP for sudoers entries"), 1);
setenv_implied = FALSE;
setenv_implied = false;
for (i = 0; i < lres->nentries; i++) {
entry = lres->entries[i].entry;
if (!sudo_ldap_check_runas(ld, entry))
@@ -2233,12 +2236,12 @@ sudo_ldap_lookup(struct sudo_nss *nss, int ret, int pwflag)
rc = sudo_ldap_check_command(ld, entry, &setenv_implied);
if (rc != UNSPEC) {
/* We have a match. */
DPRINTF(("Command %sallowed", rc == TRUE ? "" : "NOT "), 1);
if (rc == TRUE) {
DPRINTF(("Command %sallowed", rc == true ? "" : "NOT "), 1);
if (rc == true) {
DPRINTF(("LDAP entry: %p", entry), 1);
/* Apply entry-specific options. */
if (setenv_implied)
def_setenv = TRUE;
def_setenv = true;
sudo_ldap_parse_options(ld, entry);
#ifdef HAVE_SELINUX
/* Set role and type if not specified on command line. */
@@ -2446,7 +2449,7 @@ sudo_ldap_result_get(struct sudo_nss *nss, struct passwd *pw)
DPRINTF(("nothing found for '%s'", filt), 1);
continue;
}
lres->user_matches = TRUE;
lres->user_matches = true;
/* Add the seach result to list of search results. */
DPRINTF(("adding search result"), 1);
@@ -2455,7 +2458,7 @@ sudo_ldap_result_get(struct sudo_nss *nss, struct passwd *pw)
if ((!do_netgr ||
sudo_ldap_check_user_netgroup(ld, entry, pw->pw_name)) &&
sudo_ldap_check_host(ld, entry)) {
lres->host_matches = TRUE;
lres->host_matches = true;
sudo_ldap_result_add_entry(lres, entry);
}
}

View File

@@ -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);
}

View File

@@ -50,7 +50,7 @@
#include "sudoers.h"
#include "interfaces.h"
static int
static bool
addr_matches_if(char *n)
{
union sudo_in_addr_un addr;
@@ -79,27 +79,27 @@ addr_matches_if(char *n)
if (ifp->addr.ip4.s_addr == addr.ip4.s_addr ||
(ifp->addr.ip4.s_addr & ifp->netmask.ip4.s_addr)
== addr.ip4.s_addr)
debug_return_bool(TRUE);
debug_return_bool(true);
break;
#ifdef HAVE_STRUCT_IN6_ADDR
case AF_INET6:
if (memcmp(ifp->addr.ip6.s6_addr, addr.ip6.s6_addr,
sizeof(addr.ip6.s6_addr)) == 0)
debug_return_bool(TRUE);
debug_return_bool(true);
for (j = 0; j < sizeof(addr.ip6.s6_addr); j++) {
if ((ifp->addr.ip6.s6_addr[j] & ifp->netmask.ip6.s6_addr[j]) != addr.ip6.s6_addr[j])
break;
}
if (j == sizeof(addr.ip6.s6_addr))
debug_return_bool(TRUE);
debug_return_bool(true);
#endif /* HAVE_STRUCT_IN6_ADDR */
}
}
debug_return_bool(FALSE);
debug_return_bool(false);
}
static int
static bool
addr_matches_if_netmask(char *n, char *m)
{
int i;
@@ -159,7 +159,7 @@ addr_matches_if_netmask(char *n, char *m)
switch(family) {
case AF_INET:
if ((ifp->addr.ip4.s_addr & mask.ip4.s_addr) == addr.ip4.s_addr)
debug_return_bool(TRUE);
debug_return_bool(true);
#ifdef HAVE_STRUCT_IN6_ADDR
case AF_INET6:
for (j = 0; j < sizeof(addr.ip6.s6_addr); j++) {
@@ -167,23 +167,23 @@ addr_matches_if_netmask(char *n, char *m)
break;
}
if (j == sizeof(addr.ip6.s6_addr))
debug_return_bool(TRUE);
debug_return_bool(true);
#endif /* HAVE_STRUCT_IN6_ADDR */
}
}
debug_return_bool(FALSE);
debug_return_bool(false);
}
/*
* Returns TRUE if "n" is one of our ip addresses or if
* "n" is a network that we are on, else returns FALSE.
* Returns true if "n" is one of our ip addresses or if
* "n" is a network that we are on, else returns false.
*/
int
bool
addr_matches(char *n)
{
char *m;
int retval;
bool retval;
debug_decl(addr_matches, SUDO_DEBUG_MATCH)
/* If there's an explicit netmask, use it. */

View File

@@ -85,7 +85,7 @@ sudo_file_open(struct sudo_nss *nss)
if (def_ignore_local_sudoers)
debug_return_int(-1);
nss->handle = open_sudoers(sudoers_file, FALSE, NULL);
nss->handle = open_sudoers(sudoers_file, false, NULL);
debug_return_int(nss->handle ? 0 : -1);
}
@@ -164,11 +164,11 @@ sudo_file_lookup(struct sudo_nss *nss, int validated, int pwflag)
* Always check the host and user.
*/
if (pwflag) {
int nopass;
bool nopass;
enum def_tuple pwcheck;
pwcheck = (pwflag == -1) ? never : sudo_defs_table[pwflag].sd_un.tuple;
nopass = (pwcheck == all) ? TRUE : FALSE;
nopass = (pwcheck == all) ? true : false;
if (list_pw == NULL)
SET(validated, FLAG_NO_CHECK);
@@ -187,8 +187,8 @@ sudo_file_lookup(struct sudo_nss *nss, int validated, int pwflag)
user_uid == list_pw->pw_uid ||
cmnd_matches(cs->cmnd) == ALLOW)
match = ALLOW;
if ((pwcheck == any && cs->tags.nopasswd == TRUE) ||
(pwcheck == all && cs->tags.nopasswd != TRUE))
if ((pwcheck == any && cs->tags.nopasswd == true) ||
(pwcheck == all && cs->tags.nopasswd != true))
nopass = cs->tags.nopasswd;
}
}
@@ -200,8 +200,8 @@ sudo_file_lookup(struct sudo_nss *nss, int validated, int pwflag)
SET(validated, VALIDATE_NOT_OK);
if (pwcheck == always && def_authenticate)
SET(validated, FLAG_CHECK_USER);
else if (pwcheck == never || nopass == TRUE)
def_authenticate = FALSE;
else if (pwcheck == never || nopass == true)
def_authenticate = false;
debug_return_int(validated);
}
@@ -485,7 +485,7 @@ sudo_file_display_defaults(struct sudo_nss *nss, struct passwd *pw,
lbuf_append_quoted(lbuf, SUDOERS_QUOTED, "%s", d->val);
} else
lbuf_append(lbuf, "%s%s%s", prefix,
d->op == FALSE ? "!" : "", d->var);
d->op == false ? "!" : "", d->var);
prefix = ", ";
nfound++;
}
@@ -564,7 +564,7 @@ display_bound_defaults(int dtype, struct lbuf *lbuf)
lbuf_append(lbuf, "%s%s%s", d->var, d->op == '+' ? "+=" :
d->op == '-' ? "-=" : "=", d->val);
} else
lbuf_append(lbuf, "%s%s", d->op == FALSE ? "!" : "", d->var);
lbuf_append(lbuf, "%s%s", d->op == false ? "!" : "", d->var);
}
debug_return_int(nfound);

View File

@@ -37,7 +37,7 @@ struct sudo_command {
/*
* Tags associated with a command.
* Possible valus: TRUE, FALSE, UNSPEC.
* Possible values: true, false, UNSPEC.
*/
struct cmndtag {
__signed int nopasswd: 3;
@@ -148,7 +148,7 @@ struct defaults {
char *val; /* variable value */
struct member_list binding; /* user/host/runas binding */
int type; /* DEFAULTS{,_USER,_RUNAS,_HOST} */
int op; /* TRUE, FALSE, '+', '-' */
int op; /* true, false, '+', '-' */
};
/*
@@ -166,19 +166,19 @@ extern unsigned int alias_seqno;
* Prototypes
*/
char *alias_add(char *, int, struct member *);
int addr_matches(char *);
bool addr_matches(char *);
int cmnd_matches(struct member *);
int cmndlist_matches(struct member_list *);
int command_matches(char *, char *);
bool command_matches(char *, char *);
int hostlist_matches(struct member_list *);
int hostname_matches(char *, char *, char *);
int netgr_matches(char *, char *, char *, char *);
int no_aliases(void);
bool hostname_matches(char *, char *, char *);
bool netgr_matches(char *, char *, char *, char *);
bool no_aliases(void);
int runaslist_matches(struct member_list *, struct member_list *);
int userlist_matches(struct passwd *, struct member_list *);
int usergr_matches(char *, char *, struct passwd *);
int userpw_matches(char *, char *, struct passwd *);
int group_matches(char *, struct group *);
bool usergr_matches(char *, char *, struct passwd *);
bool userpw_matches(char *, char *, struct passwd *);
bool group_matches(char *, struct group *);
struct alias *alias_find(char *, int);
struct alias *alias_remove(char *, int);
void alias_free(void *);

View File

@@ -905,12 +905,13 @@ set_group_list(const char *user, GETGROUPS_T *gids, int ngids)
debug_return;
}
int
bool
user_in_group(struct passwd *pw, const char *group)
{
struct group_list *grlist;
struct group *grp = NULL;
int i, matched = FALSE;
int i;
bool matched = false;
debug_decl(user_in_group, SUDO_DEBUG_NSS)
if ((grlist = get_group_list(pw)) != NULL) {
@@ -920,12 +921,12 @@ user_in_group(struct passwd *pw, const char *group)
if (group[0] == '#') {
gid_t gid = atoi(group + 1);
if (gid == pw->pw_gid) {
matched = TRUE;
matched = true;
goto done;
}
for (i = 0; i < grlist->ngids; i++) {
if (gid == grlist->gids[i]) {
matched = TRUE;
matched = true;
goto done;
}
}
@@ -937,7 +938,7 @@ user_in_group(struct passwd *pw, const char *group)
*/
for (i = 0; i < grlist->ngroups; i++) {
if (strcasecmp(group, grlist->groups[i]) == 0) {
matched = TRUE;
matched = true;
goto done;
}
}
@@ -945,7 +946,7 @@ user_in_group(struct passwd *pw, const char *group)
/* Finally check against user's primary (passwd file) group. */
if ((grp = sudo_getgrgid(pw->pw_gid)) != NULL) {
if (strcasecmp(group, grp->gr_name) == 0) {
matched = TRUE;
matched = true;
goto done;
}
}

View File

@@ -58,9 +58,9 @@ sudo_read_nss(void)
{
FILE *fp;
char *cp;
int saw_files = FALSE;
int saw_ldap = FALSE;
int got_match = FALSE;
bool saw_files = false;
bool saw_ldap = false;
bool got_match = false;
static struct sudo_nss_list snl;
debug_decl(sudo_read_nss, SUDO_DEBUG_NSS)
@@ -80,16 +80,16 @@ sudo_read_nss(void)
for ((cp = strtok(cp + 8, " \t")); cp != NULL; (cp = strtok(NULL, " \t"))) {
if (strcasecmp(cp, "files") == 0 && !saw_files) {
tq_append(&snl, &sudo_nss_file);
got_match = TRUE;
got_match = true;
} else if (strcasecmp(cp, "ldap") == 0 && !saw_ldap) {
tq_append(&snl, &sudo_nss_ldap);
got_match = TRUE;
got_match = true;
} else if (strcasecmp(cp, "[NOTFOUND=return]") == 0 && got_match) {
/* NOTFOUND affects the most recent entry */
tq_last(&snl)->ret_if_notfound = TRUE;
got_match = FALSE;
tq_last(&snl)->ret_if_notfound = true;
got_match = false;
} else
got_match = FALSE;
got_match = false;
}
/* Only parse the first "sudoers:" line */
break;
@@ -117,9 +117,9 @@ sudo_read_nss(void)
{
FILE *fp;
char *cp, *ep;
int saw_files = FALSE;
int saw_ldap = FALSE;
int got_match = FALSE;
bool saw_files = false;
bool saw_ldap = false;
bool got_match = false;
static struct sudo_nss_list snl;
debug_decl(sudo_read_nss, SUDO_DEBUG_NSS)
@@ -149,15 +149,15 @@ sudo_read_nss(void)
if (!saw_files && strncasecmp(cp, "files", 5) == 0 &&
(isspace((unsigned char)cp[5]) || cp[5] == '\0')) {
tq_append(&snl, &sudo_nss_file);
got_match = TRUE;
got_match = true;
ep = &cp[5];
} else if (!saw_ldap && strncasecmp(cp, "ldap", 4) == 0 &&
(isspace((unsigned char)cp[4]) || cp[4] == '\0')) {
tq_append(&snl, &sudo_nss_ldap);
got_match = TRUE;
got_match = true;
ep = &cp[4];
} else {
got_match = FALSE;
got_match = false;
}
/* check for = auth qualifier */
@@ -167,7 +167,7 @@ sudo_read_nss(void)
cp++;
if (strncasecmp(cp, "auth", 4) == 0 &&
(isspace((unsigned char)cp[4]) || cp[4] == '\0')) {
tq_last(&snl)->ret_if_found = TRUE;
tq_last(&snl)->ret_if_found = true;
}
}
}
@@ -289,9 +289,9 @@ display_privs(struct sudo_nss_list *snl, struct passwd *pw)
/*
* Check user_cmnd against sudoers and print the matching entry if the
* command is allowed.
* Returns TRUE if the command is allowed, else FALSE.
* Returns true if the command is allowed, else false.
*/
int
bool
display_cmnd(struct sudo_nss_list *snl, struct passwd *pw)
{
struct sudo_nss *nss;
@@ -299,7 +299,7 @@ display_cmnd(struct sudo_nss_list *snl, struct passwd *pw)
tq_foreach_fwd(snl, nss) {
if (nss->display_cmnd(nss, pw) == 0)
debug_return_bool(TRUE);
debug_return_bool(true);
}
debug_return_bool(FALSE);
debug_return_bool(false);
}

View File

@@ -109,7 +109,7 @@ struct interface *interfaces;
int long_list;
uid_t timestamp_uid;
extern int errorlineno;
extern int parse_error;
extern bool parse_error;
extern char *errorfile;
#ifdef HAVE_LOGIN_CAP_H
login_cap_t *lc;
@@ -212,7 +212,7 @@ sudoers_policy_open(unsigned int version, sudo_conv_t conversation,
* Initialize external group plugin, if any.
*/
if (def_group_plugin) {
if (group_plugin_load(def_group_plugin) != TRUE)
if (group_plugin_load(def_group_plugin) != true)
def_group_plugin = NULL;
}
@@ -239,7 +239,7 @@ sudoers_policy_open(unsigned int version, sudo_conv_t conversation,
restore_perms();
debug_return_bool(TRUE);
debug_return_bool(true);
}
static void
@@ -297,7 +297,7 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
struct sudo_nss *nss;
int cmnd_status = -1, validated;
volatile int info_len = 0;
volatile int rval = TRUE;
volatile int rval = true;
debug_decl(sudoers_policy_main, SUDO_DEBUG_PLUGIN)
if (sigsetjmp(error_jmp, 1)) {
@@ -348,7 +348,7 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
/* If given the -P option, set the "preserve_groups" flag. */
if (ISSET(sudo_mode, MODE_PRESERVE_GROUPS))
def_preserve_groups = TRUE;
def_preserve_groups = true;
/* Find command in path */
cmnd_status = set_cmnd();
@@ -434,14 +434,14 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
*/
if (ISSET(sudo_mode, MODE_EDIT) ||
(ISSET(sudo_mode, MODE_PRESERVE_ENV) && def_setenv))
def_env_reset = FALSE;
def_env_reset = false;
/* Build a new environment that avoids any nasty bits. */
rebuild_env();
/* Require a password if sudoers says so. */
rval = check_user(validated, sudo_mode);
if (rval != TRUE)
if (rval != true)
goto done;
/* If run as root with SUDO_USER set, set sudo_user.pw to that user. */
@@ -591,13 +591,13 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
#if defined(__linux__) || defined(_AIX)
/* Insert system-wide environment variables. */
read_env_file(_PATH_ENVIRONMENT, TRUE);
read_env_file(_PATH_ENVIRONMENT, true);
#endif
}
/* Insert system-wide environment variables. */
if (def_env_file)
read_env_file(def_env_file, FALSE);
read_env_file(def_env_file, false);
/* Insert user-specified environment variables. */
insert_env_vars(sudo_user.env_vars);
@@ -688,7 +688,7 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
goto done;
bad:
rval = FALSE;
rval = false;
done:
rewind_perms();
@@ -926,7 +926,7 @@ set_cmnd(void)
* Returns a handle to the sudoers file or NULL on error.
*/
FILE *
open_sudoers(const char *sudoers, int doedit, int *keepopen)
open_sudoers(const char *sudoers, bool doedit, bool *keepopen)
{
struct stat statbuf;
FILE *fp = NULL;
@@ -1135,7 +1135,7 @@ cb_runas_default(const char *user)
/* Only reset runaspw if user didn't specify one. */
if (!runas_user && !runas_group)
set_runaspw(user);
return TRUE;
return true;
}
/*
@@ -1190,7 +1190,7 @@ sudoers_policy_version(int verbose)
dump_interfaces(interfaces_string);
sudo_printf(SUDO_CONV_INFO_MSG, "\n");
}
debug_return_bool(TRUE);
debug_return_bool(true);
}
static int
@@ -1225,59 +1225,59 @@ deserialize_info(char * const settings[], char * const user_info[])
}
if (MATCHES(*cur, "prompt=")) {
user_prompt = *cur + sizeof("prompt=") - 1;
def_passprompt_override = TRUE;
def_passprompt_override = true;
continue;
}
if (MATCHES(*cur, "set_home=")) {
if (atobool(*cur + sizeof("set_home=") - 1) == TRUE)
if (atobool(*cur + sizeof("set_home=") - 1) == true)
SET(flags, MODE_RESET_HOME);
continue;
}
if (MATCHES(*cur, "preserve_environment=")) {
if (atobool(*cur + sizeof("preserve_environment=") - 1) == TRUE)
if (atobool(*cur + sizeof("preserve_environment=") - 1) == true)
SET(flags, MODE_PRESERVE_ENV);
continue;
}
if (MATCHES(*cur, "run_shell=")) {
if (atobool(*cur + sizeof("run_shell=") - 1) == TRUE)
if (atobool(*cur + sizeof("run_shell=") - 1) == true)
SET(flags, MODE_SHELL);
continue;
}
if (MATCHES(*cur, "login_shell=")) {
if (atobool(*cur + sizeof("login_shell=") - 1) == TRUE) {
if (atobool(*cur + sizeof("login_shell=") - 1) == true) {
SET(flags, MODE_LOGIN_SHELL);
def_env_reset = TRUE;
def_env_reset = true;
}
continue;
}
if (MATCHES(*cur, "implied_shell=")) {
if (atobool(*cur + sizeof("implied_shell=") - 1) == TRUE)
if (atobool(*cur + sizeof("implied_shell=") - 1) == true)
SET(flags, MODE_IMPLIED_SHELL);
continue;
}
if (MATCHES(*cur, "preserve_groups=")) {
if (atobool(*cur + sizeof("preserve_groups=") - 1) == TRUE)
if (atobool(*cur + sizeof("preserve_groups=") - 1) == true)
SET(flags, MODE_PRESERVE_GROUPS);
continue;
}
if (MATCHES(*cur, "ignore_ticket=")) {
if (atobool(*cur + sizeof("ignore_ticket=") - 1) == TRUE)
if (atobool(*cur + sizeof("ignore_ticket=") - 1) == true)
SET(flags, MODE_IGNORE_TICKET);
continue;
}
if (MATCHES(*cur, "noninteractive=")) {
if (atobool(*cur + sizeof("noninteractive=") - 1) == TRUE)
if (atobool(*cur + sizeof("noninteractive=") - 1) == true)
SET(flags, MODE_NONINTERACTIVE);
continue;
}
if (MATCHES(*cur, "sudoedit=")) {
if (atobool(*cur + sizeof("sudoedit=") - 1) == TRUE)
if (atobool(*cur + sizeof("sudoedit=") - 1) == true)
SET(flags, MODE_EDIT);
continue;
}
if (MATCHES(*cur, "login_class=")) {
login_class = *cur + sizeof("login_class=") - 1;
def_use_loginclass = TRUE;
def_use_loginclass = true;
continue;
}
#ifdef HAVE_SELINUX
@@ -1421,7 +1421,8 @@ static char *
resolve_editor(char *editor, int nfiles, char **files, char ***argv_out)
{
char *cp, **nargv, *editor_path = NULL;
int ac, i, nargc, wasblank;
int ac, i, nargc;
bool wasblank;
debug_decl(resolve_editor, SUDO_DEBUG_PLUGIN)
editor = estrdup(editor); /* becomes part of argv_out */
@@ -1432,11 +1433,11 @@ resolve_editor(char *editor, int nfiles, char **files, char ***argv_out)
* line args so look for those and alloc space for them too.
*/
nargc = 1;
for (wasblank = FALSE, cp = editor; *cp != '\0'; cp++) {
for (wasblank = false, cp = editor; *cp != '\0'; cp++) {
if (isblank((unsigned char) *cp))
wasblank = TRUE;
wasblank = true;
else if (wasblank) {
wasblank = FALSE;
wasblank = false;
nargc++;
}
}

View File

@@ -23,6 +23,11 @@
#define _SUDO_SUDOERS_H
#include <limits.h>
#ifdef HAVE_STDBOOL_H
# include <stdbool.h>
#else
# include "compat/stdbool.h"
#endif /* HAVE_STDBOOL_H */
#include <pathnames.h>
#include "missing.h"
@@ -98,14 +103,6 @@ struct sudo_user {
#define FLAG_NO_HOST 0x040
#define FLAG_NO_CHECK 0x080
/*
* Pseudo-boolean values
*/
#undef TRUE
#define TRUE 1
#undef FALSE
#define FALSE 0
/*
* find_path()/load_cmnd() return values
*/
@@ -207,15 +204,15 @@ struct timeval;
#define YY_DECL int yylex(void)
/* goodpath.c */
int sudo_goodpath(const char *, struct stat *);
bool sudo_goodpath(const char *, struct stat *);
/* findpath.c */
int find_path(char *, char **, struct stat *, char *, int);
/* check.c */
int check_user(int, int);
void remove_timestamp(int);
int user_is_exempt(void);
void remove_timestamp(bool);
bool user_is_exempt(void);
/* sudo_auth.c */
int verify_user(struct passwd *, char *);
@@ -259,7 +256,7 @@ void zero_bytes(volatile void *, size_t);
/* sudo_nss.c */
void display_privs(struct sudo_nss_list *, struct passwd *);
int display_cmnd(struct sudo_nss_list *, struct passwd *);
bool display_cmnd(struct sudo_nss_list *, struct passwd *);
/* pwutil.c */
void sudo_setgrent(void);
@@ -283,7 +280,7 @@ void gr_addref(struct group *);
void gr_delref(struct group *);
void pw_addref(struct passwd *);
void pw_delref(struct passwd *);
int user_in_group(struct passwd *, const char *);
bool user_in_group(struct passwd *, const char *);
/* timestr.c */
char *get_timestr(time_t, int);
@@ -316,7 +313,7 @@ char *fmt_string(const char *, const char *);
/* sudoers.c */
void plugin_cleanup(int);
void set_fqdn(void);
FILE *open_sudoers(const char *, int, int *);
FILE *open_sudoers(const char *, bool, bool *);
/* aix.c */
void aix_restoreauthdb(void);

View File

@@ -253,7 +253,7 @@ main(int argc, char *argv[])
init_parser("sudoers", 0);
if (yyparse() != 0 || parse_error) {
parse_error = TRUE;
parse_error = true;
if (errorlineno != -1)
(void) printf("Parse error in %s near line %d",
errorfile, errorlineno);
@@ -267,7 +267,7 @@ main(int argc, char *argv[])
(void) fputs(" (problem with defaults entries)", stdout);
puts(".");
if (def_group_plugin && group_plugin_load(def_group_plugin) != TRUE)
if (def_group_plugin && group_plugin_load(def_group_plugin) != true)
def_group_plugin = NULL;
/*
@@ -370,7 +370,7 @@ cb_runas_default(const char *user)
/* Only reset runaspw if user didn't specify one. */
if (!runas_user && !runas_group)
set_runaspw(user);
return TRUE;
return true;
}
void
@@ -392,7 +392,7 @@ set_fqdn(void)
}
FILE *
open_sudoers(const char *path, int isdir, int *keepopen)
open_sudoers(const char *path, bool doedit, bool *keepopen)
{
return fopen(path, "r");
}
@@ -468,9 +468,9 @@ print_defaults(void)
putchar(',');
print_member(m);
}
printf("\t%s%s", d->op == FALSE ? "!" : "", d->var);
printf("\t%s%s", d->op == false ? "!" : "", d->var);
if (d->val != NULL) {
printf("%c%s", d->op == TRUE ? '=' : d->op, d->val);
printf("%c%s", d->op == true ? '=' : d->op, d->val);
}
putchar('\n');
}

View File

@@ -1478,15 +1478,16 @@ char *yytext;
#include "lbuf.h"
extern YYSTYPE yylval;
extern int parse_error;
extern bool parse_error;
int sudolineno;
int last_token;
char *sudoers;
static int continued, prev_state, sawspace;
static bool continued, sawspace;
static int prev_state;
static int _push_include(char *, int);
static int pop_include(void);
static bool _push_include(char *, bool);
static bool pop_include(void);
static char *parse_include(char *);
static int sudoers_trace_print(const char *msg);
@@ -1497,8 +1498,8 @@ int (*trace_print)(const char *msg) = sudoers_trace_print;
return (n); \
} while (0)
#define push_include(_p) (_push_include((_p), FALSE))
#define push_includedir(_p) (_push_include((_p), TRUE))
#define push_include(_p) (_push_include((_p), false))
#define push_includedir(_p) (_push_include((_p), true))
#define YY_NO_INPUT 1
#define YY_NO_UNPUT 1
#define GOTDEFS 1
@@ -1511,7 +1512,7 @@ int (*trace_print)(const char *msg) = sudoers_trace_print;
#define INSTR 5
#line 1514 "lex.yy.c"
#line 1515 "lex.yy.c"
/* Macros after this point can all be overridden by user definitions in
* section 1.
@@ -1665,9 +1666,9 @@ YY_DECL
register char *yy_cp, *yy_bp;
register int yy_act;
#line 122 "toke.l"
#line 123 "toke.l"
#line 1670 "lex.yy.c"
#line 1671 "lex.yy.c"
if ( yy_init )
{
@@ -1753,7 +1754,7 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
#line 123 "toke.l"
#line 124 "toke.l"
{
LEXTRACE(", ");
LEXRETURN(',');
@@ -1761,12 +1762,12 @@ YY_RULE_SETUP
YY_BREAK
case 2:
YY_RULE_SETUP
#line 128 "toke.l"
#line 129 "toke.l"
BEGIN STARTDEFS;
YY_BREAK
case 3:
YY_RULE_SETUP
#line 130 "toke.l"
#line 131 "toke.l"
{
BEGIN INDEFS;
LEXTRACE("DEFVAR ");
@@ -1778,7 +1779,7 @@ YY_RULE_SETUP
case 4:
YY_RULE_SETUP
#line 139 "toke.l"
#line 140 "toke.l"
{
BEGIN STARTDEFS;
LEXTRACE(", ");
@@ -1787,7 +1788,7 @@ YY_RULE_SETUP
YY_BREAK
case 5:
YY_RULE_SETUP
#line 145 "toke.l"
#line 146 "toke.l"
{
LEXTRACE("= ");
LEXRETURN('=');
@@ -1795,7 +1796,7 @@ YY_RULE_SETUP
YY_BREAK
case 6:
YY_RULE_SETUP
#line 150 "toke.l"
#line 151 "toke.l"
{
LEXTRACE("+= ");
LEXRETURN('+');
@@ -1803,7 +1804,7 @@ YY_RULE_SETUP
YY_BREAK
case 7:
YY_RULE_SETUP
#line 155 "toke.l"
#line 156 "toke.l"
{
LEXTRACE("-= ");
LEXRETURN('-');
@@ -1811,7 +1812,7 @@ YY_RULE_SETUP
YY_BREAK
case 8:
YY_RULE_SETUP
#line 160 "toke.l"
#line 161 "toke.l"
{
LEXTRACE("BEGINSTR ");
yylval.string = NULL;
@@ -1821,7 +1822,7 @@ YY_RULE_SETUP
YY_BREAK
case 9:
YY_RULE_SETUP
#line 167 "toke.l"
#line 168 "toke.l"
{
LEXTRACE("WORD(2) ");
if (!fill(yytext, yyleng))
@@ -1833,16 +1834,16 @@ YY_RULE_SETUP
case 10:
YY_RULE_SETUP
#line 176 "toke.l"
#line 177 "toke.l"
{
/* Line continuation char followed by newline. */
sudolineno++;
continued = TRUE;
continued = true;
}
YY_BREAK
case 11:
YY_RULE_SETUP
#line 182 "toke.l"
#line 183 "toke.l"
{
LEXTRACE("ENDSTR ");
BEGIN prev_state;
@@ -1877,7 +1878,7 @@ YY_RULE_SETUP
YY_BREAK
case 12:
YY_RULE_SETUP
#line 214 "toke.l"
#line 215 "toke.l"
{
LEXTRACE("BACKSLASH ");
if (!append(yytext, yyleng))
@@ -1886,7 +1887,7 @@ YY_RULE_SETUP
YY_BREAK
case 13:
YY_RULE_SETUP
#line 220 "toke.l"
#line 221 "toke.l"
{
LEXTRACE("STRBODY ");
if (!append(yytext, yyleng))
@@ -1897,29 +1898,29 @@ YY_RULE_SETUP
case 14:
YY_RULE_SETUP
#line 228 "toke.l"
#line 229 "toke.l"
{
/* quoted fnmatch glob char, pass verbatim */
LEXTRACE("QUOTEDCHAR ");
if (!fill_args(yytext, 2, sawspace))
yyterminate();
sawspace = FALSE;
sawspace = false;
}
YY_BREAK
case 15:
YY_RULE_SETUP
#line 236 "toke.l"
#line 237 "toke.l"
{
/* quoted sudoers special char, strip backslash */
LEXTRACE("QUOTEDCHAR ");
if (!fill_args(yytext + 1, 1, sawspace))
yyterminate();
sawspace = FALSE;
sawspace = false;
}
YY_BREAK
case 16:
YY_RULE_SETUP
#line 244 "toke.l"
#line 245 "toke.l"
{
BEGIN INITIAL;
yyless(0);
@@ -1928,18 +1929,18 @@ YY_RULE_SETUP
YY_BREAK
case 17:
YY_RULE_SETUP
#line 250 "toke.l"
#line 251 "toke.l"
{
LEXTRACE("ARG ");
if (!fill_args(yytext, yyleng, sawspace))
yyterminate();
sawspace = FALSE;
sawspace = false;
} /* a command line arg */
YY_BREAK
case 18:
YY_RULE_SETUP
#line 258 "toke.l"
#line 259 "toke.l"
{
char *path;
@@ -1960,7 +1961,7 @@ YY_RULE_SETUP
YY_BREAK
case 19:
YY_RULE_SETUP
#line 276 "toke.l"
#line 277 "toke.l"
{
char *path;
@@ -1984,7 +1985,7 @@ YY_RULE_SETUP
YY_BREAK
case 20:
YY_RULE_SETUP
#line 297 "toke.l"
#line 298 "toke.l"
{
char deftype;
int n;
@@ -2027,7 +2028,7 @@ YY_RULE_SETUP
YY_BREAK
case 21:
YY_RULE_SETUP
#line 337 "toke.l"
#line 338 "toke.l"
{
int n;
@@ -2056,7 +2057,7 @@ YY_RULE_SETUP
YY_BREAK
case 22:
YY_RULE_SETUP
#line 363 "toke.l"
#line 364 "toke.l"
{
/* cmnd does not require passwd for this user */
LEXTRACE("NOPASSWD ");
@@ -2065,7 +2066,7 @@ YY_RULE_SETUP
YY_BREAK
case 23:
YY_RULE_SETUP
#line 369 "toke.l"
#line 370 "toke.l"
{
/* cmnd requires passwd for this user */
LEXTRACE("PASSWD ");
@@ -2074,7 +2075,7 @@ YY_RULE_SETUP
YY_BREAK
case 24:
YY_RULE_SETUP
#line 375 "toke.l"
#line 376 "toke.l"
{
LEXTRACE("NOEXEC ");
LEXRETURN(NOEXEC);
@@ -2082,7 +2083,7 @@ YY_RULE_SETUP
YY_BREAK
case 25:
YY_RULE_SETUP
#line 380 "toke.l"
#line 381 "toke.l"
{
LEXTRACE("EXEC ");
LEXRETURN(EXEC);
@@ -2090,7 +2091,7 @@ YY_RULE_SETUP
YY_BREAK
case 26:
YY_RULE_SETUP
#line 385 "toke.l"
#line 386 "toke.l"
{
LEXTRACE("SETENV ");
LEXRETURN(SETENV);
@@ -2098,7 +2099,7 @@ YY_RULE_SETUP
YY_BREAK
case 27:
YY_RULE_SETUP
#line 390 "toke.l"
#line 391 "toke.l"
{
LEXTRACE("NOSETENV ");
LEXRETURN(NOSETENV);
@@ -2106,7 +2107,7 @@ YY_RULE_SETUP
YY_BREAK
case 28:
YY_RULE_SETUP
#line 395 "toke.l"
#line 396 "toke.l"
{
LEXTRACE("LOG_OUTPUT ");
LEXRETURN(LOG_OUTPUT);
@@ -2114,7 +2115,7 @@ YY_RULE_SETUP
YY_BREAK
case 29:
YY_RULE_SETUP
#line 400 "toke.l"
#line 401 "toke.l"
{
LEXTRACE("NOLOG_OUTPUT ");
LEXRETURN(NOLOG_OUTPUT);
@@ -2122,7 +2123,7 @@ YY_RULE_SETUP
YY_BREAK
case 30:
YY_RULE_SETUP
#line 405 "toke.l"
#line 406 "toke.l"
{
LEXTRACE("LOG_INPUT ");
LEXRETURN(LOG_INPUT);
@@ -2130,7 +2131,7 @@ YY_RULE_SETUP
YY_BREAK
case 31:
YY_RULE_SETUP
#line 410 "toke.l"
#line 411 "toke.l"
{
LEXTRACE("NOLOG_INPUT ");
LEXRETURN(NOLOG_INPUT);
@@ -2138,7 +2139,7 @@ YY_RULE_SETUP
YY_BREAK
case 32:
YY_RULE_SETUP
#line 415 "toke.l"
#line 416 "toke.l"
{
/* empty group or netgroup */
LEXTRACE("ERROR ");
@@ -2147,7 +2148,7 @@ YY_RULE_SETUP
YY_BREAK
case 33:
YY_RULE_SETUP
#line 421 "toke.l"
#line 422 "toke.l"
{
/* netgroup */
if (!fill(yytext, yyleng))
@@ -2158,7 +2159,7 @@ YY_RULE_SETUP
YY_BREAK
case 34:
YY_RULE_SETUP
#line 429 "toke.l"
#line 430 "toke.l"
{
/* group */
if (!fill(yytext, yyleng))
@@ -2169,7 +2170,7 @@ YY_RULE_SETUP
YY_BREAK
case 35:
YY_RULE_SETUP
#line 437 "toke.l"
#line 438 "toke.l"
{
if (!fill(yytext, yyleng))
yyterminate();
@@ -2179,7 +2180,7 @@ YY_RULE_SETUP
YY_BREAK
case 36:
YY_RULE_SETUP
#line 444 "toke.l"
#line 445 "toke.l"
{
if (!fill(yytext, yyleng))
yyterminate();
@@ -2189,7 +2190,7 @@ YY_RULE_SETUP
YY_BREAK
case 37:
YY_RULE_SETUP
#line 451 "toke.l"
#line 452 "toke.l"
{
if (!ipv6_valid(yytext)) {
LEXTRACE("ERROR ");
@@ -2203,7 +2204,7 @@ YY_RULE_SETUP
YY_BREAK
case 38:
YY_RULE_SETUP
#line 462 "toke.l"
#line 463 "toke.l"
{
if (!ipv6_valid(yytext)) {
LEXTRACE("ERROR ");
@@ -2217,7 +2218,7 @@ YY_RULE_SETUP
YY_BREAK
case 39:
YY_RULE_SETUP
#line 473 "toke.l"
#line 474 "toke.l"
{
LEXTRACE("ALL ");
LEXRETURN(ALL);
@@ -2226,7 +2227,7 @@ YY_RULE_SETUP
YY_BREAK
case 40:
YY_RULE_SETUP
#line 479 "toke.l"
#line 480 "toke.l"
{
#ifdef HAVE_SELINUX
LEXTRACE("ROLE ");
@@ -2238,7 +2239,7 @@ YY_RULE_SETUP
YY_BREAK
case 41:
YY_RULE_SETUP
#line 488 "toke.l"
#line 489 "toke.l"
{
#ifdef HAVE_SELINUX
LEXTRACE("TYPE ");
@@ -2250,7 +2251,7 @@ YY_RULE_SETUP
YY_BREAK
case 42:
YY_RULE_SETUP
#line 497 "toke.l"
#line 498 "toke.l"
{
#ifndef HAVE_SELINUX
got_alias:
@@ -2263,7 +2264,7 @@ YY_RULE_SETUP
YY_BREAK
case 43:
YY_RULE_SETUP
#line 507 "toke.l"
#line 508 "toke.l"
{
/* no command args allowed for Defaults!/path */
if (!fill_cmnd(yytext, yyleng))
@@ -2274,7 +2275,7 @@ YY_RULE_SETUP
YY_BREAK
case 44:
YY_RULE_SETUP
#line 515 "toke.l"
#line 516 "toke.l"
{
BEGIN GOTCMND;
LEXTRACE("COMMAND ");
@@ -2284,7 +2285,7 @@ YY_RULE_SETUP
YY_BREAK
case 45:
YY_RULE_SETUP
#line 522 "toke.l"
#line 523 "toke.l"
{
/* directories can't have args... */
if (yytext[yyleng - 1] == '/') {
@@ -2302,7 +2303,7 @@ YY_RULE_SETUP
YY_BREAK
case 46:
YY_RULE_SETUP
#line 537 "toke.l"
#line 538 "toke.l"
{
LEXTRACE("BEGINSTR ");
yylval.string = NULL;
@@ -2312,7 +2313,7 @@ YY_RULE_SETUP
YY_BREAK
case 47:
YY_RULE_SETUP
#line 544 "toke.l"
#line 545 "toke.l"
{
/* a word */
if (!fill(yytext, yyleng))
@@ -2323,7 +2324,7 @@ YY_RULE_SETUP
YY_BREAK
case 48:
YY_RULE_SETUP
#line 552 "toke.l"
#line 553 "toke.l"
{
LEXTRACE("( ");
LEXRETURN('(');
@@ -2331,7 +2332,7 @@ YY_RULE_SETUP
YY_BREAK
case 49:
YY_RULE_SETUP
#line 557 "toke.l"
#line 558 "toke.l"
{
LEXTRACE(") ");
LEXRETURN(')');
@@ -2339,7 +2340,7 @@ YY_RULE_SETUP
YY_BREAK
case 50:
YY_RULE_SETUP
#line 562 "toke.l"
#line 563 "toke.l"
{
LEXTRACE(", ");
LEXRETURN(',');
@@ -2347,7 +2348,7 @@ YY_RULE_SETUP
YY_BREAK
case 51:
YY_RULE_SETUP
#line 567 "toke.l"
#line 568 "toke.l"
{
LEXTRACE("= ");
LEXRETURN('=');
@@ -2355,7 +2356,7 @@ YY_RULE_SETUP
YY_BREAK
case 52:
YY_RULE_SETUP
#line 572 "toke.l"
#line 573 "toke.l"
{
LEXTRACE(": ");
LEXRETURN(':');
@@ -2363,7 +2364,7 @@ YY_RULE_SETUP
YY_BREAK
case 53:
YY_RULE_SETUP
#line 577 "toke.l"
#line 578 "toke.l"
{
if (yyleng & 1) {
LEXTRACE("!");
@@ -2373,7 +2374,7 @@ YY_RULE_SETUP
YY_BREAK
case 54:
YY_RULE_SETUP
#line 584 "toke.l"
#line 585 "toke.l"
{
if (YY_START == INSTR) {
LEXTRACE("ERROR ");
@@ -2381,41 +2382,41 @@ YY_RULE_SETUP
}
BEGIN INITIAL;
sudolineno++;
continued = FALSE;
continued = false;
LEXTRACE("\n");
LEXRETURN(COMMENT);
} /* return newline */
YY_BREAK
case 55:
YY_RULE_SETUP
#line 596 "toke.l"
#line 597 "toke.l"
{ /* throw away space/tabs */
sawspace = TRUE; /* but remember for fill_args */
sawspace = true; /* but remember for fill_args */
}
YY_BREAK
case 56:
YY_RULE_SETUP
#line 600 "toke.l"
#line 601 "toke.l"
{
sawspace = TRUE; /* remember for fill_args */
sawspace = true; /* remember for fill_args */
sudolineno++;
continued = TRUE;
continued = true;
} /* throw away EOL after \ */
YY_BREAK
case 57:
YY_RULE_SETUP
#line 606 "toke.l"
#line 607 "toke.l"
{
BEGIN INITIAL;
sudolineno++;
continued = FALSE;
continued = false;
LEXTRACE("#\n");
LEXRETURN(COMMENT);
} /* comment, not uid/gid */
YY_BREAK
case 58:
YY_RULE_SETUP
#line 614 "toke.l"
#line 615 "toke.l"
{
LEXTRACE("ERROR ");
LEXRETURN(ERROR);
@@ -2427,7 +2428,7 @@ case YY_STATE_EOF(GOTCMND):
case YY_STATE_EOF(STARTDEFS):
case YY_STATE_EOF(INDEFS):
case YY_STATE_EOF(INSTR):
#line 619 "toke.l"
#line 620 "toke.l"
{
if (YY_START != INITIAL) {
BEGIN INITIAL;
@@ -2440,10 +2441,10 @@ case YY_STATE_EOF(INSTR):
YY_BREAK
case 59:
YY_RULE_SETUP
#line 629 "toke.l"
#line 630 "toke.l"
ECHO;
YY_BREAK
#line 2446 "lex.yy.c"
#line 2447 "lex.yy.c"
case YY_END_OF_BUFFER:
{
@@ -3334,7 +3335,7 @@ int main()
return 0;
}
#endif
#line 629 "toke.l"
#line 630 "toke.l"
struct path_list {
char *path;
@@ -3346,7 +3347,7 @@ struct include_stack {
char *path;
struct path_list *more; /* more files in case of includedir */
int lineno;
int keepopen;
bool keepopen;
};
static int
@@ -3458,7 +3459,7 @@ bad:
static size_t istacksize, idepth;
static struct include_stack *istack;
static int keepopen;
static bool keepopen;
void
init_lexer(void)
@@ -3482,16 +3483,16 @@ init_lexer(void)
istack = NULL;
istacksize = idepth = 0;
sudolineno = 1;
keepopen = FALSE;
sawspace = FALSE;
continued = FALSE;
keepopen = false;
sawspace = false;
continued = false;
prev_state = INITIAL;
debug_return;
}
static int
_push_include(char *path, int isdir)
static bool
_push_include(char *path, bool isdir)
{
struct path_list *pl;
FILE *fp;
@@ -3501,32 +3502,32 @@ _push_include(char *path, int isdir)
if (idepth >= istacksize) {
if (idepth > MAX_SUDOERS_DEPTH) {
yyerror(_("too many levels of includes"));
debug_return_bool(FALSE);
debug_return_bool(false);
}
istacksize += SUDOERS_STACK_INCREMENT;
istack = (struct include_stack *) realloc(istack,
sizeof(*istack) * istacksize);
if (istack == NULL) {
yyerror(_("unable to allocate memory"));
debug_return_bool(FALSE);
debug_return_bool(false);
}
}
if (isdir) {
if (!(path = switch_dir(&istack[idepth], path))) {
/* switch_dir() called yyerror() for us */
debug_return_bool(FALSE);
debug_return_bool(false);
}
while ((fp = open_sudoers(path, FALSE, &keepopen)) == NULL) {
while ((fp = open_sudoers(path, false, &keepopen)) == NULL) {
/* Unable to open path in includedir, go to next one, if any. */
efree(path);
if ((pl = istack[idepth].more) == NULL)
debug_return_bool(FALSE);
debug_return_bool(false);
path = pl->path;
istack[idepth].more = pl->next;
efree(pl);
}
} else {
if ((fp = open_sudoers(path, TRUE, &keepopen)) == NULL) {
if ((fp = open_sudoers(path, true, &keepopen)) == NULL) {
char *errbuf;
if (asprintf(&errbuf, _("%s: %s"), path, strerror(errno)) != -1) {
yyerror(errbuf);
@@ -3534,7 +3535,7 @@ _push_include(char *path, int isdir)
} else {
yyerror(_("unable to allocate memory"));
}
debug_return_bool(FALSE);
debug_return_bool(false);
}
istack[idepth].more = NULL;
}
@@ -3548,10 +3549,10 @@ _push_include(char *path, int isdir)
sudoers = path;
yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
debug_return_bool(TRUE);
debug_return_bool(true);
}
static int
static bool
pop_include(void)
{
struct path_list *pl;
@@ -3559,14 +3560,14 @@ pop_include(void)
debug_decl(pop_include, SUDO_DEBUG_PARSER)
if (idepth == 0)
debug_return_bool(FALSE);
debug_return_bool(false);
if (!keepopen)
fclose(YY_CURRENT_BUFFER->yy_input_file);
yy_delete_buffer(YY_CURRENT_BUFFER);
/* If we are in an include dir, move to the next file. */
while ((pl = istack[idepth - 1].more) != NULL) {
fp = open_sudoers(pl->path, FALSE, &keepopen);
fp = open_sudoers(pl->path, false, &keepopen);
if (fp != NULL) {
istack[idepth - 1].more = pl->next;
efree(sudoers);
@@ -3590,7 +3591,7 @@ pop_include(void)
sudolineno = istack[idepth].lineno;
keepopen = istack[idepth].keepopen;
}
debug_return_bool(TRUE);
debug_return_bool(true);
}
static char *
@@ -3669,11 +3670,11 @@ sudoers_trace_print(const char *msg)
static int
sudoers_trace_print(const char *msg)
{
static int initialized;
static bool initialized;
static struct lbuf lbuf;
if (!initialized) {
initialized = TRUE;
initialized = true;
lbuf_init(&lbuf, NULL, 0, NULL, 0);
}

View File

@@ -17,11 +17,11 @@
#ifndef _SUDO_TOKE_H
#define _SUDO_TOKE_H
int append(const char *, int);
int fill_args(const char *, int, int);
int fill_cmnd(const char *, int);
int fill_txt(const char *, int, int);
int ipv6_valid(const char *s);
bool append(const char *, int);
bool fill_args(const char *, int, int);
bool fill_cmnd(const char *, int);
bool fill_txt(const char *, int, int);
bool ipv6_valid(const char *s);
void yyerror(const char *);
#ifndef FLEX_SCANNER

View File

@@ -74,15 +74,16 @@
#include "lbuf.h"
extern YYSTYPE yylval;
extern int parse_error;
extern bool parse_error;
int sudolineno;
int last_token;
char *sudoers;
static int continued, prev_state, sawspace;
static bool continued, sawspace;
static int prev_state;
static int _push_include(char *, int);
static int pop_include(void);
static bool _push_include(char *, bool);
static bool pop_include(void);
static char *parse_include(char *);
static int sudoers_trace_print(const char *msg);
@@ -93,8 +94,8 @@ int (*trace_print)(const char *msg) = sudoers_trace_print;
return (n); \
} while (0)
#define push_include(_p) (_push_include((_p), FALSE))
#define push_includedir(_p) (_push_include((_p), TRUE))
#define push_include(_p) (_push_include((_p), false))
#define push_includedir(_p) (_push_include((_p), true))
%}
HEX16 [0-9A-Fa-f]{1,4}
@@ -176,7 +177,7 @@ DEFVAR [a-z_]+
\\[[:blank:]]*\n[[:blank:]]* {
/* Line continuation char followed by newline. */
sudolineno++;
continued = TRUE;
continued = true;
}
\" {
@@ -230,7 +231,7 @@ DEFVAR [a-z_]+
LEXTRACE("QUOTEDCHAR ");
if (!fill_args(yytext, 2, sawspace))
yyterminate();
sawspace = FALSE;
sawspace = false;
}
\\[:\\,= \t#] {
@@ -238,7 +239,7 @@ DEFVAR [a-z_]+
LEXTRACE("QUOTEDCHAR ");
if (!fill_args(yytext + 1, 1, sawspace))
yyterminate();
sawspace = FALSE;
sawspace = false;
}
[#:\,=\n] {
@@ -251,7 +252,7 @@ DEFVAR [a-z_]+
LEXTRACE("ARG ");
if (!fill_args(yytext, yyleng, sawspace))
yyterminate();
sawspace = FALSE;
sawspace = false;
} /* a command line arg */
}
@@ -588,25 +589,25 @@ sudoedit {
}
BEGIN INITIAL;
sudolineno++;
continued = FALSE;
continued = false;
LEXTRACE("\n");
LEXRETURN(COMMENT);
} /* return newline */
<*>[[:blank:]]+ { /* throw away space/tabs */
sawspace = TRUE; /* but remember for fill_args */
sawspace = true; /* but remember for fill_args */
}
<*>\\[[:blank:]]*\n {
sawspace = TRUE; /* remember for fill_args */
sawspace = true; /* remember for fill_args */
sudolineno++;
continued = TRUE;
continued = true;
} /* throw away EOL after \ */
<INITIAL,STARTDEFS,INDEFS>#(-[^\n0-9].*|[^\n0-9-].*)?\n {
BEGIN INITIAL;
sudolineno++;
continued = FALSE;
continued = false;
LEXTRACE("#\n");
LEXRETURN(COMMENT);
} /* comment, not uid/gid */
@@ -637,7 +638,7 @@ struct include_stack {
char *path;
struct path_list *more; /* more files in case of includedir */
int lineno;
int keepopen;
bool keepopen;
};
static int
@@ -749,7 +750,7 @@ bad:
static size_t istacksize, idepth;
static struct include_stack *istack;
static int keepopen;
static bool keepopen;
void
init_lexer(void)
@@ -773,16 +774,16 @@ init_lexer(void)
istack = NULL;
istacksize = idepth = 0;
sudolineno = 1;
keepopen = FALSE;
sawspace = FALSE;
continued = FALSE;
keepopen = false;
sawspace = false;
continued = false;
prev_state = INITIAL;
debug_return;
}
static int
_push_include(char *path, int isdir)
static bool
_push_include(char *path, bool isdir)
{
struct path_list *pl;
FILE *fp;
@@ -792,32 +793,32 @@ _push_include(char *path, int isdir)
if (idepth >= istacksize) {
if (idepth > MAX_SUDOERS_DEPTH) {
yyerror(_("too many levels of includes"));
debug_return_bool(FALSE);
debug_return_bool(false);
}
istacksize += SUDOERS_STACK_INCREMENT;
istack = (struct include_stack *) realloc(istack,
sizeof(*istack) * istacksize);
if (istack == NULL) {
yyerror(_("unable to allocate memory"));
debug_return_bool(FALSE);
debug_return_bool(false);
}
}
if (isdir) {
if (!(path = switch_dir(&istack[idepth], path))) {
/* switch_dir() called yyerror() for us */
debug_return_bool(FALSE);
debug_return_bool(false);
}
while ((fp = open_sudoers(path, FALSE, &keepopen)) == NULL) {
while ((fp = open_sudoers(path, false, &keepopen)) == NULL) {
/* Unable to open path in includedir, go to next one, if any. */
efree(path);
if ((pl = istack[idepth].more) == NULL)
debug_return_bool(FALSE);
debug_return_bool(false);
path = pl->path;
istack[idepth].more = pl->next;
efree(pl);
}
} else {
if ((fp = open_sudoers(path, TRUE, &keepopen)) == NULL) {
if ((fp = open_sudoers(path, true, &keepopen)) == NULL) {
char *errbuf;
if (asprintf(&errbuf, _("%s: %s"), path, strerror(errno)) != -1) {
yyerror(errbuf);
@@ -825,7 +826,7 @@ _push_include(char *path, int isdir)
} else {
yyerror(_("unable to allocate memory"));
}
debug_return_bool(FALSE);
debug_return_bool(false);
}
istack[idepth].more = NULL;
}
@@ -839,10 +840,10 @@ _push_include(char *path, int isdir)
sudoers = path;
yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
debug_return_bool(TRUE);
debug_return_bool(true);
}
static int
static bool
pop_include(void)
{
struct path_list *pl;
@@ -850,14 +851,14 @@ pop_include(void)
debug_decl(pop_include, SUDO_DEBUG_PARSER)
if (idepth == 0)
debug_return_bool(FALSE);
debug_return_bool(false);
if (!keepopen)
fclose(YY_CURRENT_BUFFER->yy_input_file);
yy_delete_buffer(YY_CURRENT_BUFFER);
/* If we are in an include dir, move to the next file. */
while ((pl = istack[idepth - 1].more) != NULL) {
fp = open_sudoers(pl->path, FALSE, &keepopen);
fp = open_sudoers(pl->path, false, &keepopen);
if (fp != NULL) {
istack[idepth - 1].more = pl->next;
efree(sudoers);
@@ -881,7 +882,7 @@ pop_include(void)
sudolineno = istack[idepth].lineno;
keepopen = istack[idepth].keepopen;
}
debug_return_bool(TRUE);
debug_return_bool(true);
}
static char *
@@ -960,11 +961,11 @@ sudoers_trace_print(const char *msg)
static int
sudoers_trace_print(const char *msg)
{
static int initialized;
static bool initialized;
static struct lbuf lbuf;
if (!initialized) {
initialized = TRUE;
initialized = true;
lbuf_init(&lbuf, NULL, 0, NULL, 0);
}

View File

@@ -102,7 +102,7 @@ hexchar(const char *s)
debug_return_int(result);
}
int
bool
fill_txt(const char *src, int len, int olen)
{
char *dst;
@@ -111,7 +111,7 @@ fill_txt(const char *src, int len, int olen)
dst = olen ? realloc(yylval.string, olen + len + 1) : malloc(len + 1);
if (dst == NULL) {
yyerror(_("unable to allocate memory"));
debug_return_bool(FALSE);
debug_return_bool(false);
}
yylval.string = dst;
@@ -135,10 +135,10 @@ fill_txt(const char *src, int len, int olen)
}
}
*dst = '\0';
debug_return_bool(TRUE);
debug_return_bool(true);
}
int
bool
append(const char *src, int len)
{
int olen = 0;
@@ -153,7 +153,7 @@ append(const char *src, int len)
#define SPECIAL(c) \
((c) == ',' || (c) == ':' || (c) == '=' || (c) == ' ' || (c) == '\t' || (c) == '#')
int
bool
fill_cmnd(const char *src, int len)
{
char *dst;
@@ -165,7 +165,7 @@ fill_cmnd(const char *src, int len)
dst = yylval.command.cmnd = (char *) malloc(len + 1);
if (yylval.command.cmnd == NULL) {
yyerror(_("unable to allocate memory"));
debug_return_bool(FALSE);
debug_return_bool(false);
}
/* Copy the string and collapse any escaped sudo-specific characters. */
@@ -178,10 +178,10 @@ fill_cmnd(const char *src, int len)
*dst = '\0';
yylval.command.args = NULL;
debug_return_bool(TRUE);
debug_return_bool(true);
}
int
bool
fill_args(const char *s, int len, int addspace)
{
int new_len;
@@ -205,7 +205,7 @@ fill_args(const char *s, int len, int addspace)
if (p == NULL) {
efree(yylval.command.args);
yyerror(_("unable to allocate memory"));
debug_return_bool(FALSE);
debug_return_bool(false);
} else
yylval.command.args = p;
}
@@ -216,18 +216,18 @@ fill_args(const char *s, int len, int addspace)
*p++ = ' ';
if (strlcpy(p, s, arg_size - (p - yylval.command.args)) != len) {
yyerror(_("fill_args: buffer overflow")); /* paranoia */
debug_return_bool(FALSE);
debug_return_bool(false);
}
arg_len = new_len;
debug_return_bool(TRUE);
debug_return_bool(true);
}
/*
* Check to make sure an IPv6 address does not contain multiple instances
* of the string "::". Assumes strlen(s) >= 1.
* Returns TRUE if address is valid else FALSE.
* Returns true if address is valid else false.
*/
int
bool
ipv6_valid(const char *s)
{
int nmatch = 0;

View File

@@ -105,12 +105,12 @@ static char *get_args(char *);
static char *get_editor(char **);
static void get_hostname(void);
static char whatnow(void);
static int check_aliases(int, int);
static int check_syntax(char *, int, int);
static int edit_sudoers(struct sudoersfile *, char *, char *, int);
static int install_sudoers(struct sudoersfile *, int);
static int check_aliases(bool, bool);
static int check_syntax(char *, bool, bool);
static bool edit_sudoers(struct sudoersfile *, char *, char *, int);
static bool install_sudoers(struct sudoersfile *, bool);
static int print_unused(void *, void *);
static int reparse_sudoers(char *, char *, int, int);
static bool reparse_sudoers(char *, char *, bool, bool);
static int run_command(char *, char **);
static int visudo_printf(int msg_type, const char *fmt, ...);
static void setup_signals(void);
@@ -148,7 +148,8 @@ main(int argc, char *argv[])
{
struct sudoersfile *sp;
char *args, *editor, *sudoers_path;
int ch, checkonly, quiet, strict, oldperms;
int ch;
bool checkonly, quiet, strict, oldperms;
#if defined(SUDO_DEVEL) && defined(__OpenBSD__)
extern char *malloc_options;
malloc_options = "AFGJPR";
@@ -170,7 +171,7 @@ main(int argc, char *argv[])
/*
* Arg handling.
*/
checkonly = oldperms = quiet = strict = FALSE;
checkonly = oldperms = quiet = strict = false;
sudoers_path = _PATH_SUDOERS;
while ((ch = getopt(argc, argv, "Vcf:sq")) != -1) {
switch (ch) {
@@ -183,7 +184,7 @@ main(int argc, char *argv[])
break;
case 'f':
sudoers_path = optarg; /* sudoers file path */
oldperms = TRUE;
oldperms = true;
break;
case 'h':
help();
@@ -222,7 +223,7 @@ main(int argc, char *argv[])
* Parse the existing sudoers file(s) in quiet mode to highlight any
* existing errors and to pull in editor and env_editor conf values.
*/
if ((yyin = open_sudoers(sudoers_path, TRUE, NULL)) == NULL) {
if ((yyin = open_sudoers(sudoers_path, true, NULL)) == NULL) {
error(1, "%s", sudoers_path);
}
init_parser(sudoers_path, 0);
@@ -283,13 +284,13 @@ static char *lineno_editors[] = {
/*
* Edit each sudoers file.
* Returns TRUE on success, else FALSE.
* Returns true on success, else false.
*/
static int
static bool
edit_sudoers(struct sudoersfile *sp, char *editor, char *args, int lineno)
{
int tfd; /* sudoers temp file descriptor */
int modified; /* was the file modified? */
bool modified; /* was the file modified? */
int ac; /* argument count */
char **av; /* argument vector for run_command */
char *cp; /* scratch char pointer */
@@ -362,14 +363,14 @@ edit_sudoers(struct sudoersfile *sp, char *editor, char *args, int lineno)
/* Find the length of the argument vector */
ac = 3 + (lineno > 0);
if (args) {
int wasblank;
bool wasblank;
ac++;
for (wasblank = FALSE, cp = args; *cp; cp++) {
for (wasblank = false, cp = args; *cp; cp++) {
if (isblank((unsigned char) *cp))
wasblank = TRUE;
wasblank = true;
else if (wasblank) {
wasblank = FALSE;
wasblank = false;
ac++;
}
}
@@ -408,21 +409,21 @@ edit_sudoers(struct sudoersfile *sp, char *editor, char *args, int lineno)
if (stat(sp->tpath, &sb) < 0) {
warningx(_("unable to stat temporary file (%s), %s unchanged"),
sp->tpath, sp->path);
return FALSE;
return false;
}
if (sb.st_size == 0 && orig_size != 0) {
warningx(_("zero length temporary file (%s), %s unchanged"),
sp->tpath, sp->path);
sp->modified = TRUE;
return FALSE;
sp->modified = true;
return false;
}
} else {
warningx(_("editor (%s) failed, %s unchanged"), editor, sp->path);
return FALSE;
return false;
}
/* Set modified bit if use changed the file. */
modified = TRUE;
modified = true;
mtim_get(&sb, &tv);
if (orig_size == sb.st_size && timevalcmp(&orig_mtim, &tv, ==)) {
/*
@@ -431,7 +432,7 @@ edit_sudoers(struct sudoersfile *sp, char *editor, char *args, int lineno)
*/
timevalsub(&tv1, &tv2);
if (timevalisset(&tv2))
modified = FALSE;
modified = false;
}
/*
@@ -442,15 +443,15 @@ edit_sudoers(struct sudoersfile *sp, char *editor, char *args, int lineno)
else
warningx(_("%s unchanged"), sp->tpath);
return TRUE;
return true;
}
/*
* Parse sudoers after editing and re-edit any ones that caused a parse error.
* Returns TRUE on success, else FALSE.
* Returns true on success, else false.
*/
static int
reparse_sudoers(char *editor, char *args, int strict, int quiet)
static bool
reparse_sudoers(char *editor, char *args, bool strict, bool quiet)
{
struct sudoersfile *sp, *last;
FILE *fp;
@@ -476,14 +477,14 @@ reparse_sudoers(char *editor, char *args, int strict, int quiet)
if (yyparse() && !parse_error) {
warningx(_("unabled to parse temporary file (%s), unknown error"),
sp->tpath);
parse_error = TRUE;
parse_error = true;
errorfile = sp->path;
}
fclose(yyin);
if (!parse_error) {
if (!update_defaults(SETDEF_GENERIC|SETDEF_HOST|SETDEF_USER) ||
check_aliases(strict, quiet) != 0) {
parse_error = TRUE;
parse_error = true;
errorfile = sp->path;
}
}
@@ -493,7 +494,7 @@ reparse_sudoers(char *editor, char *args, int strict, int quiet)
*/
if (parse_error) {
switch (whatnow()) {
case 'Q' : parse_error = FALSE; /* ignore parse error */
case 'Q' : parse_error = false; /* ignore parse error */
break;
case 'x' : cleanup(0);
exit(0);
@@ -523,15 +524,15 @@ reparse_sudoers(char *editor, char *args, int strict, int quiet)
}
} while (parse_error);
return TRUE;
return true;
}
/*
* Set the owner and mode on a sudoers temp file and
* move it into place. Returns TRUE on success, else FALSE.
* move it into place. Returns true on success, else false.
*/
static int
install_sudoers(struct sudoersfile *sp, int oldperms)
static bool
install_sudoers(struct sudoersfile *sp, bool oldperms)
{
struct stat sb;
@@ -546,7 +547,7 @@ install_sudoers(struct sudoersfile *sp, int oldperms)
if ((sb.st_mode & 0777) != SUDOERS_MODE)
(void) chmod(sp->path, SUDOERS_MODE);
}
return TRUE;
return true;
}
/*
@@ -569,12 +570,12 @@ install_sudoers(struct sudoersfile *sp, int oldperms)
if (chown(sp->tpath, SUDOERS_UID, SUDOERS_GID) != 0) {
warning(_("unable to set (uid, gid) of %s to (%u, %u)"),
sp->tpath, SUDOERS_UID, SUDOERS_GID);
return FALSE;
return false;
}
if (chmod(sp->tpath, SUDOERS_MODE) != 0) {
warning(_("unable to change mode of %s to 0%o"), sp->tpath,
SUDOERS_MODE);
return FALSE;
return false;
}
}
@@ -608,17 +609,17 @@ install_sudoers(struct sudoersfile *sp, int oldperms)
(void) unlink(sp->tpath);
efree(sp->tpath);
sp->tpath = NULL;
return FALSE;
return false;
}
efree(sp->tpath);
sp->tpath = NULL;
} else {
warning(_("error renaming %s, %s unchanged"), sp->tpath, sp->path);
(void) unlink(sp->tpath);
return FALSE;
return false;
}
}
return TRUE;
return true;
}
/* STUB */
@@ -636,10 +637,10 @@ init_envtables(void)
}
/* STUB */
int
bool
user_is_exempt(void)
{
return FALSE;
return false;
}
/* STUB */
@@ -660,7 +661,7 @@ sudo_endspent(void)
int
group_plugin_query(const char *user, const char *group, const struct passwd *pw)
{
return FALSE;
return false;
}
/*
@@ -746,10 +747,10 @@ run_command(char *path, char **argv)
}
static int
check_syntax(char *sudoers_path, int quiet, int strict)
check_syntax(char *sudoers_path, bool quiet, bool strict)
{
struct stat sb;
int error;
int rval;
if (strcmp(sudoers_path, "-") == 0) {
yyin = stdin;
@@ -763,14 +764,14 @@ check_syntax(char *sudoers_path, int quiet, int strict)
if (yyparse() && !parse_error) {
if (!quiet)
warningx(_("failed to parse %s file, unknown error"), sudoers_path);
parse_error = TRUE;
parse_error = true;
errorfile = sudoers_path;
}
if (!parse_error && check_aliases(strict, quiet) != 0) {
parse_error = TRUE;
parse_error = true;
errorfile = sudoers_path;
}
error = parse_error;
rval = parse_error;
if (!quiet) {
if (parse_error) {
if (errorlineno != -1)
@@ -785,7 +786,7 @@ check_syntax(char *sudoers_path, int quiet, int strict)
/* Check mode and owner in strict mode. */
if (strict && yyin != stdin && fstat(fileno(yyin), &sb) == 0) {
if (sb.st_uid != SUDOERS_UID || sb.st_gid != SUDOERS_GID) {
error = TRUE;
rval = 1;
if (!quiet) {
fprintf(stderr,
_("%s: wrong owner (uid, gid) should be (%u, %u)\n"),
@@ -793,7 +794,7 @@ check_syntax(char *sudoers_path, int quiet, int strict)
}
}
if ((sb.st_mode & 07777) != SUDOERS_MODE) {
error = TRUE;
rval = 1;
if (!quiet) {
fprintf(stderr, _("%s: bad permissions, should be mode 0%o\n"),
sudoers_path, SUDOERS_MODE);
@@ -801,7 +802,7 @@ check_syntax(char *sudoers_path, int quiet, int strict)
}
}
return error;
return rval;
}
/*
@@ -809,7 +810,7 @@ check_syntax(char *sudoers_path, int quiet, int strict)
* any subsequent files #included via a callback from the parser.
*/
FILE *
open_sudoers(const char *path, int doedit, int *keepopen)
open_sudoers(const char *path, bool doedit, bool *keepopen)
{
struct sudoersfile *entry;
FILE *fp;
@@ -850,7 +851,7 @@ open_sudoers(const char *path, int doedit, int *keepopen)
}
}
if (keepopen != NULL)
*keepopen = TRUE;
*keepopen = true;
return fp;
}
@@ -997,18 +998,18 @@ get_hostname(void)
}
}
static int
static bool
alias_remove_recursive(char *name, int type)
{
struct member *m;
struct alias *a;
int rval = TRUE;
bool rval = true;
if ((a = alias_find(name, type)) != NULL) {
tq_foreach_fwd(&a->members, m) {
if (m->type == ALIAS) {
if (!alias_remove_recursive(m->name, type))
rval = FALSE;
rval = false;
}
}
}
@@ -1024,13 +1025,13 @@ check_alias(char *name, int type, int strict, int quiet)
{
struct member *m;
struct alias *a;
int error = 0;
int errors = 0;
if ((a = alias_find(name, type)) != NULL) {
/* check alias contents */
tq_foreach_fwd(&a->members, m) {
if (m->type == ALIAS)
error += check_alias(m->name, type, strict, quiet);
errors += check_alias(m->name, type, strict, quiet);
}
} else {
if (!quiet) {
@@ -1049,10 +1050,10 @@ check_alias(char *name, int type, int strict, int quiet)
type == USERALIAS ? "User" : type == RUNASALIAS ? "Runas" :
"Unknown", name);
}
error++;
errors++;
}
return error;
return errors;
}
/*
@@ -1060,14 +1061,14 @@ check_alias(char *name, int type, int strict, int quiet)
* aliases or unused aliases.
*/
static int
check_aliases(int strict, int quiet)
check_aliases(bool strict, bool quiet)
{
struct cmndspec *cs;
struct member *m, *binding;
struct privilege *priv;
struct userspec *us;
struct defaults *d;
int atype, error = 0;
int atype, errors = 0;
alias_freelist = rbcreate(alias_compare);
@@ -1076,26 +1077,26 @@ check_aliases(int strict, int quiet)
tq_foreach_fwd(&us->users, m) {
if (m->type == ALIAS) {
alias_seqno++;
error += check_alias(m->name, USERALIAS, strict, quiet);
errors += check_alias(m->name, USERALIAS, strict, quiet);
}
}
tq_foreach_fwd(&us->privileges, priv) {
tq_foreach_fwd(&priv->hostlist, m) {
if (m->type == ALIAS) {
alias_seqno++;
error += check_alias(m->name, HOSTALIAS, strict, quiet);
errors += check_alias(m->name, HOSTALIAS, strict, quiet);
}
}
tq_foreach_fwd(&priv->cmndlist, cs) {
tq_foreach_fwd(&cs->runasuserlist, m) {
if (m->type == ALIAS) {
alias_seqno++;
error += check_alias(m->name, RUNASALIAS, strict, quiet);
errors += check_alias(m->name, RUNASALIAS, strict, quiet);
}
}
if ((m = cs->cmnd)->type == ALIAS) {
alias_seqno++;
error += check_alias(m->name, CMNDALIAS, strict, quiet);
errors += check_alias(m->name, CMNDALIAS, strict, quiet);
}
}
}
@@ -1107,7 +1108,7 @@ check_aliases(int strict, int quiet)
if (m->type == ALIAS) {
alias_seqno++;
if (!alias_remove_recursive(m->name, USERALIAS))
error++;
errors++;
}
}
tq_foreach_fwd(&us->privileges, priv) {
@@ -1115,7 +1116,7 @@ check_aliases(int strict, int quiet)
if (m->type == ALIAS) {
alias_seqno++;
if (!alias_remove_recursive(m->name, HOSTALIAS))
error++;
errors++;
}
}
tq_foreach_fwd(&priv->cmndlist, cs) {
@@ -1123,13 +1124,13 @@ check_aliases(int strict, int quiet)
if (m->type == ALIAS) {
alias_seqno++;
if (!alias_remove_recursive(m->name, RUNASALIAS))
error++;
errors++;
}
}
if ((m = cs->cmnd)->type == ALIAS) {
alias_seqno++;
if (!alias_remove_recursive(m->name, CMNDALIAS))
error++;
errors++;
}
}
}
@@ -1156,7 +1157,7 @@ check_aliases(int strict, int quiet)
if (m->type == ALIAS) {
alias_seqno++;
if (!alias_remove_recursive(m->name, atype))
error++;
errors++;
}
}
}
@@ -1167,7 +1168,7 @@ check_aliases(int strict, int quiet)
if (!no_aliases() && !quiet)
alias_apply(print_unused, strict ? "Error" : "Warning");
return strict ? error : 0;
return strict ? errors : 0;
}
static int

View File

@@ -132,7 +132,7 @@ static int fork_cmnd(struct command_details *details, int sv[2])
close(signal_pipe[1]);
fcntl(sv[1], F_SETFD, FD_CLOEXEC);
restore_signals();
if (exec_setup(details, NULL, -1) == TRUE) {
if (exec_setup(details, NULL, -1) == true) {
/* headed for execve() */
sudo_debug_execve(SUDO_DEBUG_INFO, details->command,
details->argv, details->envp);
@@ -221,8 +221,9 @@ restore_signals(void)
int
sudo_execve(struct command_details *details, struct command_status *cstat)
{
int maxfd, n, nready, sv[2], log_io = FALSE;
int maxfd, n, nready, sv[2];
const char *utmp_user = NULL;
bool log_io = false;
fd_set *fdsr, *fdsw;
sigaction_t sa;
pid_t child;
@@ -254,7 +255,7 @@ sudo_execve(struct command_details *details, struct command_status *cstat)
* as the io plugin tailqueue will be empty and no I/O logging will occur.
*/
if (!tq_empty(&io_plugins) || ISSET(details->flags, CD_USE_PTY)) {
log_io = TRUE;
log_io = true;
if (ISSET(details->flags, CD_SET_UTMP))
utmp_user = details->utmp_user ? details->utmp_user : user_details.username;
sudo_debug_printf(SUDO_DEBUG_INFO, "allocate pty for I/O logging");
@@ -501,7 +502,7 @@ handle_signals(int fd, pid_t child, int log_io, struct command_status *cstat)
} else {
/* Nothing listening on sv[0], send directly. */
if (signo == SIGALRM)
terminate_child(child, FALSE);
terminate_child(child, false);
else if (kill(child, signo) != 0)
warning("kill(%d, %d)", (int)child, signo);
}

View File

@@ -85,15 +85,13 @@ struct io_buffer {
int off; /* write position (how much already consumed) */
int rfd; /* reader (producer) */
int wfd; /* writer (consumer) */
int (*action)(const char *buf, unsigned int len);
bool (*action)(const char *buf, unsigned int len);
char buf[16 * 1024];
};
static char slavename[PATH_MAX];
static int foreground;
static bool foreground, pipeline, tty_initialized;
static int io_fds[6] = { -1, -1, -1, -1, -1, -1};
static int pipeline = FALSE;
static int tty_initialized;
static int ttymode = TERM_COOKED;
static pid_t ppgrp, child, child_pgrp;
static sigset_t ttyblock;
@@ -149,118 +147,118 @@ pty_setup(uid_t uid, const char *tty, const char *utmp_user)
}
/* Call I/O plugin tty input log method. */
static int
static bool
log_ttyin(const char *buf, unsigned int n)
{
struct plugin_container *plugin;
sigset_t omask;
int rval = TRUE;
bool rval = true;
debug_decl(log_ttyin, SUDO_DEBUG_EXEC);
sigprocmask(SIG_BLOCK, &ttyblock, &omask);
tq_foreach_fwd(&io_plugins, plugin) {
if (plugin->u.io->log_ttyin) {
if (!plugin->u.io->log_ttyin(buf, n)) {
rval = FALSE;
rval = false;
break;
}
}
}
sigprocmask(SIG_SETMASK, &omask, NULL);
debug_return_int(rval);
debug_return_bool(rval);
}
/* Call I/O plugin stdin log method. */
static int
static bool
log_stdin(const char *buf, unsigned int n)
{
struct plugin_container *plugin;
sigset_t omask;
int rval = TRUE;
bool rval = true;
debug_decl(log_stdin, SUDO_DEBUG_EXEC);
sigprocmask(SIG_BLOCK, &ttyblock, &omask);
tq_foreach_fwd(&io_plugins, plugin) {
if (plugin->u.io->log_stdin) {
if (!plugin->u.io->log_stdin(buf, n)) {
rval = FALSE;
rval = false;
break;
}
}
}
sigprocmask(SIG_SETMASK, &omask, NULL);
debug_return_int(rval);
debug_return_bool(rval);
}
/* Call I/O plugin tty output log method. */
static int
static bool
log_ttyout(const char *buf, unsigned int n)
{
struct plugin_container *plugin;
sigset_t omask;
int rval = TRUE;
bool rval = true;
debug_decl(log_ttyout, SUDO_DEBUG_EXEC);
sigprocmask(SIG_BLOCK, &ttyblock, &omask);
tq_foreach_fwd(&io_plugins, plugin) {
if (plugin->u.io->log_ttyout) {
if (!plugin->u.io->log_ttyout(buf, n)) {
rval = FALSE;
rval = false;
break;
}
}
}
sigprocmask(SIG_SETMASK, &omask, NULL);
debug_return_int(rval);
debug_return_bool(rval);
}
/* Call I/O plugin stdout log method. */
static int
static bool
log_stdout(const char *buf, unsigned int n)
{
struct plugin_container *plugin;
sigset_t omask;
int rval = TRUE;
bool rval = true;
debug_decl(log_stdout, SUDO_DEBUG_EXEC);
sigprocmask(SIG_BLOCK, &ttyblock, &omask);
tq_foreach_fwd(&io_plugins, plugin) {
if (plugin->u.io->log_stdout) {
if (!plugin->u.io->log_stdout(buf, n)) {
rval = FALSE;
rval = false;
break;
}
}
}
sigprocmask(SIG_SETMASK, &omask, NULL);
debug_return_int(rval);
debug_return_bool(rval);
}
/* Call I/O plugin stderr log method. */
static int
static bool
log_stderr(const char *buf, unsigned int n)
{
struct plugin_container *plugin;
sigset_t omask;
int rval = TRUE;
bool rval = true;
debug_decl(log_stderr, SUDO_DEBUG_EXEC);
sigprocmask(SIG_BLOCK, &ttyblock, &omask);
tq_foreach_fwd(&io_plugins, plugin) {
if (plugin->u.io->log_stderr) {
if (!plugin->u.io->log_stderr(buf, n)) {
rval = FALSE;
rval = false;
break;
}
}
}
sigprocmask(SIG_SETMASK, &omask, NULL);
debug_return_int(rval);
debug_return_bool(rval);
}
/*
@@ -277,7 +275,7 @@ check_foreground(void)
foreground = tcgetpgrp(io_fds[SFD_USERTTY]) == ppgrp;
if (foreground && !tty_initialized) {
if (term_copy(io_fds[SFD_USERTTY], io_fds[SFD_SLAVE])) {
tty_initialized = 1;
tty_initialized = true;
sync_ttysize(io_fds[SFD_USERTTY], io_fds[SFD_SLAVE]);
}
}
@@ -372,7 +370,7 @@ suspend_parent(int signo)
* Kill child with increasing urgency.
*/
void
terminate_child(pid_t pid, int use_pgrp)
terminate_child(pid_t pid, bool use_pgrp)
{
debug_decl(terminate_child, SUDO_DEBUG_EXEC);
@@ -401,7 +399,7 @@ terminate_child(pid_t pid, int use_pgrp)
}
static struct io_buffer *
io_buf_new(int rfd, int wfd, int (*action)(const char *, unsigned int),
io_buf_new(int rfd, int wfd, bool (*action)(const char *, unsigned int),
struct io_buffer *head)
{
struct io_buffer *iob;
@@ -453,7 +451,7 @@ perform_io(fd_set *fdsr, fd_set *fdsw, struct command_status *cstat)
break;
default:
if (!iob->action(iob->buf + iob->len, n))
terminate_child(child, TRUE);
terminate_child(child, true);
iob->len += n;
break;
}
@@ -554,7 +552,7 @@ fork_pty(struct command_details *details, int sv[], int *maxfd)
*/
memset(io_pipe, 0, sizeof(io_pipe));
if (io_fds[SFD_STDIN] == -1 || !isatty(STDIN_FILENO)) {
pipeline = TRUE;
pipeline = true;
if (pipe(io_pipe[STDIN_FILENO]) != 0)
error(1, _("unable to create pipe"));
iobufs = io_buf_new(STDIN_FILENO, io_pipe[STDIN_FILENO][1],
@@ -562,7 +560,7 @@ fork_pty(struct command_details *details, int sv[], int *maxfd)
io_fds[SFD_STDIN] = io_pipe[STDIN_FILENO][0];
}
if (io_fds[SFD_STDOUT] == -1 || !isatty(STDOUT_FILENO)) {
pipeline = TRUE;
pipeline = true;
if (pipe(io_pipe[STDOUT_FILENO]) != 0)
error(1, _("unable to create pipe"));
iobufs = io_buf_new(io_pipe[STDOUT_FILENO][0], STDOUT_FILENO,
@@ -585,7 +583,7 @@ fork_pty(struct command_details *details, int sv[], int *maxfd)
if (foreground) {
/* Copy terminal attrs from user tty -> pty slave. */
if (term_copy(io_fds[SFD_USERTTY], io_fds[SFD_SLAVE])) {
tty_initialized = 1;
tty_initialized = true;
sync_ttysize(io_fds[SFD_USERTTY], io_fds[SFD_SLAVE]);
}
@@ -611,7 +609,7 @@ fork_pty(struct command_details *details, int sv[], int *maxfd)
close(signal_pipe[0]);
close(signal_pipe[1]);
fcntl(sv[1], F_SETFD, FD_CLOEXEC);
if (exec_setup(details, slavename, io_fds[SFD_SLAVE]) == TRUE) {
if (exec_setup(details, slavename, io_fds[SFD_SLAVE]) == true) {
/* Close the other end of the stdin/stdout/stderr pipes and exec. */
if (io_pipe[STDIN_FILENO][1])
close(io_pipe[STDIN_FILENO][1]);
@@ -743,7 +741,7 @@ deliver_signal(pid_t pid, int signo)
sudo_debug_printf(SUDO_DEBUG_INFO, "received signal %d from parent", signo);
switch (signo) {
case SIGALRM:
terminate_child(pid, TRUE);
terminate_child(pid, true);
break;
case SIGCONT_FG:
/* Continue in foreground, grant it controlling tty. */
@@ -800,12 +798,13 @@ send_status(int fd, struct command_status *cstat)
* Wait for child status after receiving SIGCHLD.
* If the child was stopped, the status is send back to the parent.
* Otherwise, cstat is filled in but not sent.
* Returns TRUE if child is still alive, else FALSE.
* Returns true if child is still alive, else false.
*/
static int
static bool
handle_sigchld(int backchannel, struct command_status *cstat)
{
int status, alive = TRUE;
bool alive = true;
int status;
pid_t pid;
debug_decl(handle_sigchld, SUDO_DEBUG_EXEC);
@@ -834,9 +833,9 @@ handle_sigchld(int backchannel, struct command_status *cstat)
}
}
if (!WIFSTOPPED(status))
alive = FALSE;
alive = false;
}
debug_return_int(alive);
debug_return_bool(alive);
}
/*
@@ -854,7 +853,7 @@ exec_monitor(struct command_details *details, int backchannel)
fd_set *fdsr;
sigaction_t sa;
int errpipe[2], maxfd, n, status;
int alive = TRUE;
bool alive = true;
unsigned char signo;
debug_decl(exec_monitor, SUDO_DEBUG_EXEC);
@@ -916,7 +915,7 @@ exec_monitor(struct command_details *details, int backchannel)
* when it needs access to the controlling tty.
*/
if (pipeline)
foreground = 0;
foreground = false;
/* Start command and wait for it to stop or exit */
if (pipe(errpipe) == -1)

View File

@@ -66,7 +66,7 @@ const char *debug_flags;
struct sudo_conf_table {
const char *name;
unsigned int namelen;
int (*setter)(const char *entry, void *data);
bool (*setter)(const char *entry, void *data);
};
struct sudo_conf_paths {
@@ -75,9 +75,9 @@ struct sudo_conf_paths {
const char **pval;
};
static int set_debug(const char *entry, void *data);
static int set_path(const char *entry, void *data);
static int set_plugin(const char *entry, void *data);
static bool set_debug(const char *entry, void *data);
static bool set_path(const char *entry, void *data);
static bool set_plugin(const char *entry, void *data);
static struct plugin_info_list plugin_info_list;
@@ -99,7 +99,7 @@ static struct sudo_conf_paths sudo_conf_paths[] = {
/*
* "Debug progname debug_file debug_flags"
*/
static int
static bool
set_debug(const char *entry, void *data)
{
size_t filelen, proglen;
@@ -113,14 +113,14 @@ set_debug(const char *entry, void *data)
proglen = strlen(progname);
if (strncmp(entry, progname, proglen) != 0 ||
!isblank((unsigned char)entry[proglen]))
return FALSE;
return false;
entry += proglen + 1;
while (isblank((unsigned char)*entry))
entry++;
debug_flags = strpbrk(entry, " \t");
if (debug_flags == NULL)
return FALSE;
return false;
filelen = (size_t)(debug_flags - entry);
while (isblank((unsigned char)*debug_flags))
debug_flags++;
@@ -131,10 +131,10 @@ set_debug(const char *entry, void *data)
sudo_debug_init(debug_file, debug_flags);
efree(debug_file);
return TRUE;
return true;
}
static int
static bool
set_path(const char *entry, void *data)
{
const char *name, *path;
@@ -144,7 +144,7 @@ set_path(const char *entry, void *data)
name = entry;
path = strpbrk(entry, " \t");
if (path == NULL)
return FALSE;
return false;
while (isblank((unsigned char)*path))
path++;
@@ -157,10 +157,10 @@ set_path(const char *entry, void *data)
}
}
return TRUE;
return true;
}
static int
static bool
set_plugin(const char *entry, void *data)
{
struct plugin_info_list *pil = data;
@@ -172,7 +172,7 @@ set_plugin(const char *entry, void *data)
name = entry;
path = strpbrk(entry, " \t");
if (path == NULL)
return FALSE;
return false;
namelen = (size_t)(path - name);
while (isblank((unsigned char)*path))
path++;
@@ -184,7 +184,7 @@ set_plugin(const char *entry, void *data)
info->next = NULL;
tq_append(pil, info);
return TRUE;
return true;
}
/*
@@ -243,7 +243,7 @@ done:
/*
* Load the plugins listed in sudo.conf.
*/
int
bool
sudo_load_plugins(struct plugin_container *policy_plugin,
struct plugin_container_list *io_plugins)
{
@@ -253,7 +253,7 @@ sudo_load_plugins(struct plugin_container *policy_plugin,
struct stat sb;
void *handle;
char path[PATH_MAX];
int rval = FALSE;
bool rval = false;
/* Walk plugin list. */
tq_foreach_fwd(&plugin_info_list, info) {
@@ -336,7 +336,7 @@ sudo_load_plugins(struct plugin_container *policy_plugin,
goto done;
}
rval = TRUE;
rval = true;
done:
return rval;

View File

@@ -223,7 +223,7 @@ main(int argc, char *argv[], char *envp[])
/* Open policy plugin. */
ok = policy_open(&policy_plugin, settings, user_info, envp);
if (ok != TRUE) {
if (ok != 1) {
if (ok == -2)
usage(1);
else
@@ -236,14 +236,14 @@ main(int argc, char *argv[], char *envp[])
tq_foreach_fwd(&io_plugins, plugin) {
ok = iolog_open(plugin, settings, user_info, NULL,
nargc, nargv, envp);
if (ok == TRUE)
if (ok == 1)
iolog_show_version(plugin, !user_details.uid);
}
break;
case MODE_VALIDATE:
case MODE_VALIDATE|MODE_INVALIDATE:
ok = policy_validate(&policy_plugin);
exit(ok != TRUE);
exit(ok != 1);
case MODE_KILL:
case MODE_INVALIDATE:
policy_invalidate(&policy_plugin, sudo_mode == MODE_KILL);
@@ -255,13 +255,13 @@ main(int argc, char *argv[], char *envp[])
case MODE_LIST|MODE_INVALIDATE:
ok = policy_list(&policy_plugin, nargc, nargv,
ISSET(sudo_mode, MODE_LONG_LIST), list_user);
exit(ok != TRUE);
exit(ok != 1);
case MODE_EDIT:
case MODE_RUN:
ok = policy_check(&policy_plugin, nargc, nargv, env_add,
&command_info, &argv_out, &user_env_out);
sudo_debug_printf(SUDO_DEBUG_INFO, "policy plugin returns %d", ok);
if (ok != TRUE) {
if (ok != 1) {
if (ok == -2)
usage(1);
exit(1); /* plugin printed error message */
@@ -272,9 +272,9 @@ main(int argc, char *argv[], char *envp[])
ok = iolog_open(plugin, settings, user_info,
command_info, nargc, nargv, envp);
switch (ok) {
case TRUE:
case 1:
break;
case FALSE:
case 0:
/* I/O plugin asked to be disabled, remove from list. */
tq_remove(&io_plugins, plugin);
break;
@@ -557,7 +557,7 @@ command_info_to_details(char * const info[], struct command_details *details)
break;
}
if (strncmp("noexec=", info[i], sizeof("noexec=") - 1) == 0) {
if (atobool(info[i] + sizeof("noexec=") - 1) == TRUE)
if (atobool(info[i] + sizeof("noexec=") - 1) == true)
SET(details->flags, CD_NOEXEC);
break;
}
@@ -571,7 +571,7 @@ command_info_to_details(char * const info[], struct command_details *details)
break;
case 'p':
if (strncmp("preserve_groups=", info[i], sizeof("preserve_groups=") - 1) == 0) {
if (atobool(info[i] + sizeof("preserve_groups=") - 1) == TRUE)
if (atobool(info[i] + sizeof("preserve_groups=") - 1) == true)
SET(details->flags, CD_PRESERVE_GROUPS);
break;
}
@@ -665,12 +665,12 @@ command_info_to_details(char * const info[], struct command_details *details)
SET_STRING("selinux_role=", selinux_role)
SET_STRING("selinux_type=", selinux_type)
if (strncmp("set_utmp=", info[i], sizeof("set_utmp=") - 1) == 0) {
if (atobool(info[i] + sizeof("set_utmp=") - 1) == TRUE)
if (atobool(info[i] + sizeof("set_utmp=") - 1) == true)
SET(details->flags, CD_SET_UTMP);
break;
}
if (strncmp("sudoedit=", info[i], sizeof("sudoedit=") - 1) == 0) {
if (atobool(info[i] + sizeof("sudoedit=") - 1) == TRUE)
if (atobool(info[i] + sizeof("sudoedit=") - 1) == true)
SET(details->flags, CD_SUDOEDIT);
break;
}
@@ -707,7 +707,7 @@ command_info_to_details(char * const info[], struct command_details *details)
break;
}
if (strncmp("use_pty=", info[i], sizeof("use_pty=") - 1) == 0) {
if (atobool(info[i] + sizeof("use_pty=") - 1) == TRUE)
if (atobool(info[i] + sizeof("use_pty=") - 1) == true)
SET(details->flags, CD_USE_PTY);
break;
}
@@ -906,12 +906,12 @@ disable_execute(struct command_details *details)
/*
* Setup the execution environment immediately prior to the call to execve()
* Returns TRUE on success and FALSE on failure.
* Returns true on success and false on failure.
*/
int
bool
exec_setup(struct command_details *details, const char *ptyname, int ptyfd)
{
int rval = FALSE;
bool rval = false;
struct passwd *pw;
debug_decl(exec_setup, SUDO_DEBUG_EXEC)
@@ -927,7 +927,7 @@ exec_setup(struct command_details *details, const char *ptyname, int ptyfd)
* Call policy plugin's session init before other setup occurs.
* The session init code is expected to print an error as needed.
*/
if (policy_init_session(&policy_plugin, pw) != TRUE)
if (policy_init_session(&policy_plugin, pw) != true)
goto done;
#ifdef HAVE_SELINUX
@@ -1063,7 +1063,7 @@ exec_setup(struct command_details *details, const char *ptyname, int ptyfd)
}
#endif
rval = TRUE;
rval = true;
done:
debug_return_bool(rval);
@@ -1160,7 +1160,7 @@ policy_list(struct plugin_container *plugin, int argc, char * const argv[],
if (plugin->u.policy->list == NULL) {
warningx(_("policy plugin %s does not support listing privileges"),
plugin->name);
debug_return_bool(FALSE);
debug_return_bool(false);
}
debug_return_bool(plugin->u.policy->list(argc, argv, verbose, list_user));
}
@@ -1172,7 +1172,7 @@ policy_validate(struct plugin_container *plugin)
if (plugin->u.policy->validate == NULL) {
warningx(_("policy plugin %s does not support the -v option"),
plugin->name);
debug_return_bool(FALSE);
debug_return_bool(false);
}
debug_return_bool(plugin->u.policy->validate());
}
@@ -1195,7 +1195,7 @@ policy_init_session(struct plugin_container *plugin, struct passwd *pwd)
debug_decl(policy_init_session, SUDO_DEBUG_PCOMM)
if (plugin->u.policy->init_session)
debug_return_bool(plugin->u.policy->init_session(pwd));
debug_return_bool(TRUE);
debug_return_bool(true);
}
static int

View File

@@ -26,6 +26,11 @@
#include <limits.h>
#include <pathnames.h>
#ifdef HAVE_STDBOOL_H
# include <stdbool.h>
#else
# include "compat/stdbool.h"
#endif /* HAVE_STDBOOL_H */
#include "missing.h"
#include "alloc.h"
@@ -41,14 +46,6 @@
# define ROOT_UID 0
#endif
/*
* Pseudo-boolean values
*/
#undef TRUE
#define TRUE 1
#undef FALSE
#define FALSE 0
/*
* Various modes sudo can be in (based on arguments) in hex
*/
@@ -187,7 +184,7 @@ int term_restore(int, int);
char *fmt_string(const char *var, const char *value);
/* atobool.c */
int atobool(const char *str);
bool atobool(const char *str);
/* parse_args.c */
int parse_args(int argc, char **argv, int *nargc, char ***nargv,
@@ -201,7 +198,7 @@ int get_pty(int *master, int *slave, char *name, size_t namesz, uid_t uid);
void get_ttysize(int *rowp, int *colp);
/* sudo.c */
int exec_setup(struct command_details *details, const char *ptyname, int ptyfd);
bool exec_setup(struct command_details *details, const char *ptyname, int ptyfd);
int run_command(struct command_details *details);
extern int debug_level;
extern const char *list_user, *runas_user, *runas_group;

View File

@@ -39,12 +39,12 @@ void fd_set_iobs(fd_set *fdsr, fd_set *fdsw);
void handler(int s);
void pty_close(struct command_status *cstat);
void pty_setup(uid_t uid, const char *tty, const char *utmp_user);
void terminate_child(pid_t pid, int use_pgrp);
void terminate_child(pid_t pid, bool use_pgrp);
extern int signal_pipe[2];
/* utmp.c */
int utmp_login(const char *from_line, const char *to_line, int ttyfd,
bool utmp_login(const char *from_line, const char *to_line, int ttyfd,
const char *user);
int utmp_logout(const char *line, int status);
bool utmp_logout(const char *line, int status);
#endif /* _SUDO_EXEC_H */

View File

@@ -79,7 +79,7 @@ int sudo_conversation(int num_msgs, const struct sudo_conv_message msgs[],
int _sudo_printf(int msg_type, const char *fmt, ...);
void sudo_read_conf(void);
int sudo_load_plugins(struct plugin_container *policy_plugin,
bool sudo_load_plugins(struct plugin_container *policy_plugin,
struct plugin_container_list *io_plugins);
#endif /* _SUDO_PLUGIN_INT_H */

View File

@@ -181,12 +181,12 @@ utmp_fill(const char *line, const char *user, sudo_utmp_t *ut_old,
* Legacy: sparse file indexed by ttyslot() * sizeof(struct utmp)
*/
#if defined(HAVE_GETUTXID) || defined(HAVE_GETUTID)
int
bool
utmp_login(const char *from_line, const char *to_line, int ttyfd,
const char *user)
{
sudo_utmp_t utbuf, *ut_old = NULL;
int rval = FALSE;
bool rval = false;
debug_decl(utmp_login, SUDO_DEBUG_UTMP)
/* Strip off /dev/ prefix from line as needed. */
@@ -204,16 +204,16 @@ utmp_login(const char *from_line, const char *to_line, int ttyfd,
}
utmp_fill(to_line, user, ut_old, &utbuf);
if (pututxline(&utbuf) != NULL)
rval = TRUE;
rval = true;
endutxent();
debug_return_int(rval);
debug_return_bool(rval);
}
int
bool
utmp_logout(const char *line, int status)
{
int rval = FALSE;
bool rval = false;
sudo_utmp_t *ut, utbuf;
debug_decl(utmp_logout, SUDO_DEBUG_UTMP)
@@ -234,9 +234,9 @@ utmp_logout(const char *line, int status)
# endif
utmp_settime(ut);
if (pututxline(ut) != NULL)
rval = TRUE;
rval = true;
}
debug_return_int(rval);
debug_return_bool(rval);
}
#else /* !HAVE_GETUTXID && !HAVE_GETUTID */
@@ -287,12 +287,13 @@ utmp_slot(const char *line, int ttyfd)
}
# endif /* HAVE_GETTTYENT */
int
bool
utmp_login(const char *from_line, const char *to_line, int ttyfd,
const char *user)
{
sudo_utmp_t utbuf, *ut_old = NULL;
int slot, rval = FALSE;
bool rval = false;
int slot;
FILE *fp;
debug_decl(utmp_login, SUDO_DEBUG_UTMP)
@@ -328,19 +329,19 @@ utmp_login(const char *from_line, const char *to_line, int ttyfd,
utmp_fill(to_line, user, ut_old, &utbuf);
if (fseek(fp, slot * (long)sizeof(utbuf), SEEK_SET) == 0) {
if (fwrite(&utbuf, sizeof(utbuf), 1, fp) == 1)
rval = TRUE;
rval = true;
}
fclose(fp);
done:
debug_return_int(rval);
debug_return_bool(rval);
}
int
bool
utmp_logout(const char *line, int status)
{
sudo_utmp_t utbuf;
int rval = FALSE;
bool rval = false;
FILE *fp;
debug_decl(utmp_logout, SUDO_DEBUG_UTMP)
@@ -361,13 +362,13 @@ utmp_logout(const char *line, int status)
/* Back up and overwrite record. */
if (fseek(fp, 0L - (long)sizeof(utbuf), SEEK_CUR) == 0) {
if (fwrite(&utbuf, sizeof(utbuf), 1, fp) == 1)
rval = TRUE;
rval = true;
}
break;
}
}
fclose(fp);
debug_return_int(rval);
debug_return_bool(rval);
}
#endif /* HAVE_GETUTXID || HAVE_GETUTID */