Annotation of embedaddon/sudo/src/sudo.h, revision 1.1

1.1     ! misho       1: /*
        !             2:  * Copyright (c) 1993-1996, 1998-2005, 2007-2011
        !             3:  *     Todd C. Miller <Todd.Miller@courtesan.com>
        !             4:  *
        !             5:  * Permission to use, copy, modify, and distribute this software for any
        !             6:  * purpose with or without fee is hereby granted, provided that the above
        !             7:  * copyright notice and this permission notice appear in all copies.
        !             8:  *
        !             9:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !            10:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            11:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            12:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            13:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            14:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            15:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            16:  *
        !            17:  * Sponsored in part by the Defense Advanced Research Projects
        !            18:  * Agency (DARPA) and Air Force Research Laboratory, Air Force
        !            19:  * Materiel Command, USAF, under agreement number F39502-99-1-0512.
        !            20:  *
        !            21:  * $Sudo: sudo.h,v 1.290 2009/12/12 16:12:26 millert Exp $
        !            22:  */
        !            23: 
        !            24: #ifndef _SUDO_SUDO_H
        !            25: #define _SUDO_SUDO_H
        !            26: 
        !            27: #include <limits.h>
        !            28: #include <pathnames.h>
        !            29: 
        !            30: #include "missing.h"
        !            31: #include "alloc.h"
        !            32: #include "error.h"
        !            33: #include "fileops.h"
        !            34: #include "list.h"
        !            35: #include "gettext.h"
        !            36: 
        !            37: #ifdef __TANDEM
        !            38: # define ROOT_UID       65535
        !            39: #else
        !            40: # define ROOT_UID       0
        !            41: #endif
        !            42: 
        !            43: /*
        !            44:  * Pseudo-boolean values
        !            45:  */
        !            46: #undef TRUE
        !            47: #define TRUE                     1
        !            48: #undef FALSE
        !            49: #define FALSE                    0
        !            50: 
        !            51: /*
        !            52:  * Various modes sudo can be in (based on arguments) in hex
        !            53:  */
        !            54: #define MODE_RUN               0x00000001
        !            55: #define MODE_EDIT              0x00000002
        !            56: #define MODE_VALIDATE          0x00000004
        !            57: #define MODE_INVALIDATE                0x00000008
        !            58: #define MODE_KILL              0x00000010
        !            59: #define MODE_VERSION           0x00000020
        !            60: #define MODE_HELP              0x00000040
        !            61: #define MODE_LIST              0x00000080
        !            62: #define MODE_CHECK             0x00000100
        !            63: #define MODE_MASK              0x0000ffff
        !            64: 
        !            65: /* Mode flags */
        !            66: /* XXX - prune this */
        !            67: #define MODE_BACKGROUND                0x00010000
        !            68: #define MODE_SHELL             0x00020000
        !            69: #define MODE_LOGIN_SHELL       0x00040000
        !            70: #define MODE_IMPLIED_SHELL     0x00080000
        !            71: #define MODE_RESET_HOME                0x00100000
        !            72: #define MODE_PRESERVE_GROUPS   0x00200000
        !            73: #define MODE_PRESERVE_ENV      0x00400000
        !            74: #define MODE_NONINTERACTIVE    0x00800000
        !            75: #define MODE_LONG_LIST         0x01000000
        !            76: 
        !            77: /*
        !            78:  * We used to use the system definition of PASS_MAX or _PASSWD_LEN,
        !            79:  * but that caused problems with various alternate authentication
        !            80:  * methods.  So, we just define our own and assume that it is >= the
        !            81:  * system max.
        !            82:  */
        !            83: #define SUDO_PASS_MAX  256
        !            84: 
        !            85: /*
        !            86:  * Flags for tgetpass()
        !            87:  */
        !            88: #define TGP_NOECHO     0x00            /* turn echo off reading pw (default) */
        !            89: #define TGP_ECHO       0x01            /* leave echo on when reading passwd */
        !            90: #define TGP_STDIN      0x02            /* read from stdin, not /dev/tty */
        !            91: #define TGP_ASKPASS    0x04            /* read from askpass helper program */
        !            92: #define TGP_MASK       0x08            /* mask user input when reading */
        !            93: #define TGP_NOECHO_TRY 0x10            /* turn off echo if possible */
        !            94: 
        !            95: struct user_details {
        !            96:     uid_t uid;
        !            97:     uid_t euid;
        !            98:     uid_t gid;
        !            99:     uid_t egid;
        !           100:     const char *username;
        !           101:     const char *cwd;
        !           102:     const char *tty;
        !           103:     const char *host;
        !           104:     const char *shell;
        !           105:     GETGROUPS_T *groups;
        !           106:     int ngroups;
        !           107:     int ts_cols;
        !           108:     int ts_lines;
        !           109: };
        !           110: 
        !           111: #define CD_SET_UID             0x0001
        !           112: #define CD_SET_EUID            0x0002
        !           113: #define CD_SET_GID             0x0004
        !           114: #define CD_SET_EGID            0x0008
        !           115: #define CD_PRESERVE_GROUPS     0x0010
        !           116: #define CD_NOEXEC              0x0020
        !           117: #define CD_SET_PRIORITY                0x0040
        !           118: #define CD_SET_UMASK           0x0080
        !           119: #define CD_SET_TIMEOUT         0x0100
        !           120: #define CD_SUDOEDIT            0x0200
        !           121: #define CD_BACKGROUND          0x0400
        !           122: #define CD_RBAC_ENABLED                0x0800
        !           123: #define CD_USE_PTY             0x1000
        !           124: #define CD_SET_UTMP            0x2000
        !           125: 
        !           126: struct command_details {
        !           127:     uid_t uid;
        !           128:     uid_t euid;
        !           129:     gid_t gid;
        !           130:     gid_t egid;
        !           131:     mode_t umask;
        !           132:     int priority;
        !           133:     int timeout;
        !           134:     int ngroups;
        !           135:     int closefrom;
        !           136:     int flags;
        !           137:     GETGROUPS_T *groups;
        !           138:     const char *command;
        !           139:     const char *cwd;
        !           140:     const char *login_class;
        !           141:     const char *chroot;
        !           142:     const char *selinux_role;
        !           143:     const char *selinux_type;
        !           144:     const char *utmp_user;
        !           145:     char **argv;
        !           146:     char **envp;
        !           147: };
        !           148: 
        !           149: /* Status passed between parent and child via socketpair */
        !           150: struct command_status {
        !           151: #define CMD_INVALID 0
        !           152: #define CMD_ERRNO 1
        !           153: #define CMD_WSTATUS 2
        !           154: #define CMD_SIGNO 3
        !           155:     int type;
        !           156:     int val;
        !           157: };
        !           158: 
        !           159: struct timeval;
        !           160: 
        !           161: /* For error() and errorx() (XXX - needed?) */
        !           162: void cleanup(int);
        !           163: 
        !           164: /* tgetpass.c */
        !           165: char *tgetpass(const char *, int, int);
        !           166: int tty_present(void);
        !           167: extern const char *askpass_path;
        !           168: extern const char *noexec_path;
        !           169: 
        !           170: /* zero_bytes.c */
        !           171: void zero_bytes(volatile void *, size_t);
        !           172: 
        !           173: /* exec.c */
        !           174: int sudo_execve(struct command_details *details, struct command_status *cstat);
        !           175: void save_signals(void);
        !           176: void restore_signals(void);
        !           177: 
        !           178: /* term.c */
        !           179: int term_cbreak(int);
        !           180: int term_copy(int, int);
        !           181: int term_noecho(int);
        !           182: int term_raw(int, int);
        !           183: int term_restore(int, int);
        !           184: 
        !           185: /* fmt_string.h */
        !           186: char *fmt_string(const char *var, const char *value);
        !           187: 
        !           188: /* atobool.c */
        !           189: int atobool(const char *str);
        !           190: 
        !           191: /* parse_args.c */
        !           192: int parse_args(int argc, char **argv, int *nargc, char ***nargv,
        !           193:     char ***settingsp, char ***env_addp);
        !           194: extern int tgetpass_flags;
        !           195: 
        !           196: /* get_pty.c */
        !           197: int get_pty(int *master, int *slave, char *name, size_t namesz, uid_t uid);
        !           198: 
        !           199: /* ttysize.c */
        !           200: void get_ttysize(int *rowp, int *colp);
        !           201: 
        !           202: /* sudo.c */
        !           203: int exec_setup(struct command_details *details, const char *ptyname, int ptyfd);
        !           204: int run_command(struct command_details *details);
        !           205: void sudo_debug(int level, const char *format, ...) __printflike(2, 3);
        !           206: extern int debug_level;
        !           207: extern const char *list_user, *runas_user, *runas_group;
        !           208: extern struct user_details user_details;
        !           209: 
        !           210: /* sudo_edit.c */
        !           211: int sudo_edit(struct command_details *details);
        !           212: 
        !           213: /* parse_args.c */
        !           214: void usage(int);
        !           215: 
        !           216: /* selinux.c */
        !           217: int selinux_restore_tty(void);
        !           218: int selinux_setup(const char *role, const char *type, const char *ttyn,
        !           219:     int ttyfd);
        !           220: void selinux_execve(const char *path, char *argv[], char *envp[]);
        !           221: 
        !           222: /* aix.c */
        !           223: void aix_prep_user(char *user, const char *tty);
        !           224: void aix_restoreauthdb(void);
        !           225: void aix_setauthdb(char *user);
        !           226: 
        !           227: /* interfaces.c */
        !           228: int get_net_ifs(char **addrinfo);
        !           229: 
        !           230: /* setgroups.c */
        !           231: int sudo_setgroups(int ngids, const GETGROUPS_T *gids);
        !           232: 
        !           233: #endif /* _SUDO_SUDO_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>