--- embedaddon/sudo/plugins/sudoers/sudoers.h 2012/02/21 16:23:02 1.1.1.1 +++ embedaddon/sudo/plugins/sudoers/sudoers.h 2012/05/29 12:26:49 1.1.1.2 @@ -23,6 +23,11 @@ #define _SUDO_SUDOERS_H #include +#ifdef HAVE_STDBOOL_H +# include +#else +# include "compat/stdbool.h" +#endif /* HAVE_STDBOOL_H */ #include #include "missing.h" @@ -34,6 +39,7 @@ #include "logging.h" #include "sudo_nss.h" #include "sudo_plugin.h" +#include "sudo_debug.h" #define DEFAULT_TEXT_DOMAIN "sudoers" #include "gettext.h" @@ -98,14 +104,6 @@ struct sudo_user { #define FLAG_NO_CHECK 0x080 /* - * Pseudo-boolean values - */ -#undef TRUE -#define TRUE 1 -#undef FALSE -#define FALSE 0 - -/* * find_path()/load_cmnd() return values */ #define FOUND 0 @@ -206,20 +204,20 @@ struct timeval; #define YY_DECL int yylex(void) /* goodpath.c */ -char *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 *); -int sudo_auth_begin_session(struct passwd *); -int sudo_auth_end_session(struct passwd *); +int verify_user(struct passwd *pw, char *prompt); +int sudo_auth_begin_session(struct passwd *pw, char **user_env[]); +int sudo_auth_end_session(struct passwd *pw); int sudo_auth_init(struct passwd *pw); int sudo_auth_cleanup(struct passwd *pw); @@ -245,6 +243,10 @@ int yyparse(void); /* toke.l */ YY_DECL; +extern const char *sudoers_file; +extern mode_t sudoers_mode; +extern uid_t sudoers_uid; +extern gid_t sudoers_gid; /* defaults.c */ void dump_defaults(void); @@ -258,7 +260,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); @@ -282,7 +284,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); @@ -302,12 +304,20 @@ char *expand_iolog_path(const char *prefix, const char /* env.c */ char **env_get(void); +void env_merge(char * const envp[], bool overwrite); void env_init(char * const envp[]); void init_envtables(void); void insert_env_vars(char * const envp[]); void read_env_file(const char *, int); void rebuild_env(void); void validate_env_vars(char * const envp[]); +int sudo_setenv(const char *var, const char *val, int overwrite); +int sudo_unsetenv(const char *var); +char *sudo_getenv(const char *name); +int sudoers_hook_getenv(const char *name, char **value, void *closure); +int sudoers_hook_putenv(char *string, void *closure); +int sudoers_hook_setenv(const char *name, const char *value, int overwrite, void *closure); +int sudoers_hook_unsetenv(const char *name, void *closure); /* fmt_string.c */ char *fmt_string(const char *, const char *); @@ -315,7 +325,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); @@ -333,10 +343,6 @@ int sudo_setgroups(int ngids, const GETGROUPS_T *gids) #ifndef _SUDO_MAIN extern struct sudo_user sudo_user; extern struct passwd *list_pw; -extern const char *sudoers_file; -extern mode_t sudoers_mode; -extern uid_t sudoers_uid; -extern gid_t sudoers_gid; extern int long_list; extern int sudo_mode; extern uid_t timestamp_uid;