--- embedaddon/sudo/plugins/sudoers/parse.h 2012/02/21 16:23:02 1.1.1.1 +++ embedaddon/sudo/plugins/sudoers/parse.h 2012/10/09 09:29:52 1.1.1.3 @@ -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; @@ -57,7 +57,17 @@ struct selinux_info { }; /* - * The parses sudoers file is stored as a collection of linked lists, + * Solaris privileges container struct + * Currently just contains permitted and limit privileges. + * It could have PFEXEC and PRIV_AWARE flags added in the future. + */ +struct solaris_privs_info { + char *privs; + char *limitprivs; +}; + +/* + * The parsed sudoers file is stored as a collection of linked lists, * modelled after the yacc grammar. * * Other than the alias struct, which is stored in a red-black tree, @@ -111,6 +121,9 @@ struct cmndspec { #ifdef HAVE_SELINUX char *role, *type; /* SELinux role and type */ #endif +#ifdef HAVE_PRIV_SET + char *privs, *limitprivs; /* Solaris privilege sets */ +#endif }; /* @@ -148,7 +161,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,26 +179,26 @@ 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); -int runaslist_matches(struct member_list *, struct member_list *); +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 *, struct member **, struct member **); 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 *); void alias_apply(int (*)(void *, void *), void *); void init_aliases(void); void init_lexer(void); -void init_parser(const char *, int); +void init_parser(const char *, bool); int alias_compare(const void *, const void *); #endif /* _SUDO_PARSE_H */