From: Todd C. Miller Date: Wed, 31 Aug 2016 20:27:40 +0000 (-0600) Subject: Define def_foo in terms of the I_FOO index instead of a bare number. X-Git-Tag: SUDO_1_8_18^2~42 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7a54b49fc4ef9859ccc843fafcad8f7b6fcabad4;p=sudo Define def_foo in terms of the I_FOO index instead of a bare number. --- diff --git a/plugins/sudoers/def_data.h b/plugins/sudoers/def_data.h index 1b3cd1e60..3032cdee6 100644 --- a/plugins/sudoers/def_data.h +++ b/plugins/sudoers/def_data.h @@ -1,201 +1,201 @@ -#define def_syslog (sudo_defs_table[0].sd_un.ival) #define I_SYSLOG 0 -#define def_syslog_goodpri (sudo_defs_table[1].sd_un.ival) +#define def_syslog (sudo_defs_table[I_SYSLOG].sd_un.ival) #define I_SYSLOG_GOODPRI 1 -#define def_syslog_badpri (sudo_defs_table[2].sd_un.ival) +#define def_syslog_goodpri (sudo_defs_table[I_SYSLOG_GOODPRI].sd_un.ival) #define I_SYSLOG_BADPRI 2 -#define def_long_otp_prompt (sudo_defs_table[3].sd_un.flag) +#define def_syslog_badpri (sudo_defs_table[I_SYSLOG_BADPRI].sd_un.ival) #define I_LONG_OTP_PROMPT 3 -#define def_ignore_dot (sudo_defs_table[4].sd_un.flag) +#define def_long_otp_prompt (sudo_defs_table[I_LONG_OTP_PROMPT].sd_un.flag) #define I_IGNORE_DOT 4 -#define def_mail_always (sudo_defs_table[5].sd_un.flag) +#define def_ignore_dot (sudo_defs_table[I_IGNORE_DOT].sd_un.flag) #define I_MAIL_ALWAYS 5 -#define def_mail_badpass (sudo_defs_table[6].sd_un.flag) +#define def_mail_always (sudo_defs_table[I_MAIL_ALWAYS].sd_un.flag) #define I_MAIL_BADPASS 6 -#define def_mail_no_user (sudo_defs_table[7].sd_un.flag) +#define def_mail_badpass (sudo_defs_table[I_MAIL_BADPASS].sd_un.flag) #define I_MAIL_NO_USER 7 -#define def_mail_no_host (sudo_defs_table[8].sd_un.flag) +#define def_mail_no_user (sudo_defs_table[I_MAIL_NO_USER].sd_un.flag) #define I_MAIL_NO_HOST 8 -#define def_mail_no_perms (sudo_defs_table[9].sd_un.flag) +#define def_mail_no_host (sudo_defs_table[I_MAIL_NO_HOST].sd_un.flag) #define I_MAIL_NO_PERMS 9 -#define def_mail_all_cmnds (sudo_defs_table[10].sd_un.flag) +#define def_mail_no_perms (sudo_defs_table[I_MAIL_NO_PERMS].sd_un.flag) #define I_MAIL_ALL_CMNDS 10 -#define def_tty_tickets (sudo_defs_table[11].sd_un.flag) +#define def_mail_all_cmnds (sudo_defs_table[I_MAIL_ALL_CMNDS].sd_un.flag) #define I_TTY_TICKETS 11 -#define def_lecture (sudo_defs_table[12].sd_un.tuple) +#define def_tty_tickets (sudo_defs_table[I_TTY_TICKETS].sd_un.flag) #define I_LECTURE 12 -#define def_lecture_file (sudo_defs_table[13].sd_un.str) +#define def_lecture (sudo_defs_table[I_LECTURE].sd_un.tuple) #define I_LECTURE_FILE 13 -#define def_authenticate (sudo_defs_table[14].sd_un.flag) +#define def_lecture_file (sudo_defs_table[I_LECTURE_FILE].sd_un.str) #define I_AUTHENTICATE 14 -#define def_root_sudo (sudo_defs_table[15].sd_un.flag) +#define def_authenticate (sudo_defs_table[I_AUTHENTICATE].sd_un.flag) #define I_ROOT_SUDO 15 -#define def_log_host (sudo_defs_table[16].sd_un.flag) +#define def_root_sudo (sudo_defs_table[I_ROOT_SUDO].sd_un.flag) #define I_LOG_HOST 16 -#define def_log_year (sudo_defs_table[17].sd_un.flag) +#define def_log_host (sudo_defs_table[I_LOG_HOST].sd_un.flag) #define I_LOG_YEAR 17 -#define def_shell_noargs (sudo_defs_table[18].sd_un.flag) +#define def_log_year (sudo_defs_table[I_LOG_YEAR].sd_un.flag) #define I_SHELL_NOARGS 18 -#define def_set_home (sudo_defs_table[19].sd_un.flag) +#define def_shell_noargs (sudo_defs_table[I_SHELL_NOARGS].sd_un.flag) #define I_SET_HOME 19 -#define def_always_set_home (sudo_defs_table[20].sd_un.flag) +#define def_set_home (sudo_defs_table[I_SET_HOME].sd_un.flag) #define I_ALWAYS_SET_HOME 20 -#define def_path_info (sudo_defs_table[21].sd_un.flag) +#define def_always_set_home (sudo_defs_table[I_ALWAYS_SET_HOME].sd_un.flag) #define I_PATH_INFO 21 -#define def_fqdn (sudo_defs_table[22].sd_un.flag) +#define def_path_info (sudo_defs_table[I_PATH_INFO].sd_un.flag) #define I_FQDN 22 -#define def_insults (sudo_defs_table[23].sd_un.flag) +#define def_fqdn (sudo_defs_table[I_FQDN].sd_un.flag) #define I_INSULTS 23 -#define def_requiretty (sudo_defs_table[24].sd_un.flag) +#define def_insults (sudo_defs_table[I_INSULTS].sd_un.flag) #define I_REQUIRETTY 24 -#define def_env_editor (sudo_defs_table[25].sd_un.flag) +#define def_requiretty (sudo_defs_table[I_REQUIRETTY].sd_un.flag) #define I_ENV_EDITOR 25 -#define def_rootpw (sudo_defs_table[26].sd_un.flag) +#define def_env_editor (sudo_defs_table[I_ENV_EDITOR].sd_un.flag) #define I_ROOTPW 26 -#define def_runaspw (sudo_defs_table[27].sd_un.flag) +#define def_rootpw (sudo_defs_table[I_ROOTPW].sd_un.flag) #define I_RUNASPW 27 -#define def_targetpw (sudo_defs_table[28].sd_un.flag) +#define def_runaspw (sudo_defs_table[I_RUNASPW].sd_un.flag) #define I_TARGETPW 28 -#define def_use_loginclass (sudo_defs_table[29].sd_un.flag) +#define def_targetpw (sudo_defs_table[I_TARGETPW].sd_un.flag) #define I_USE_LOGINCLASS 29 -#define def_set_logname (sudo_defs_table[30].sd_un.flag) +#define def_use_loginclass (sudo_defs_table[I_USE_LOGINCLASS].sd_un.flag) #define I_SET_LOGNAME 30 -#define def_stay_setuid (sudo_defs_table[31].sd_un.flag) +#define def_set_logname (sudo_defs_table[I_SET_LOGNAME].sd_un.flag) #define I_STAY_SETUID 31 -#define def_preserve_groups (sudo_defs_table[32].sd_un.flag) +#define def_stay_setuid (sudo_defs_table[I_STAY_SETUID].sd_un.flag) #define I_PRESERVE_GROUPS 32 -#define def_loglinelen (sudo_defs_table[33].sd_un.uival) +#define def_preserve_groups (sudo_defs_table[I_PRESERVE_GROUPS].sd_un.flag) #define I_LOGLINELEN 33 -#define def_timestamp_timeout (sudo_defs_table[34].sd_un.fval) +#define def_loglinelen (sudo_defs_table[I_LOGLINELEN].sd_un.uival) #define I_TIMESTAMP_TIMEOUT 34 -#define def_passwd_timeout (sudo_defs_table[35].sd_un.fval) +#define def_timestamp_timeout (sudo_defs_table[I_TIMESTAMP_TIMEOUT].sd_un.fval) #define I_PASSWD_TIMEOUT 35 -#define def_passwd_tries (sudo_defs_table[36].sd_un.uival) +#define def_passwd_timeout (sudo_defs_table[I_PASSWD_TIMEOUT].sd_un.fval) #define I_PASSWD_TRIES 36 -#define def_umask (sudo_defs_table[37].sd_un.mode) +#define def_passwd_tries (sudo_defs_table[I_PASSWD_TRIES].sd_un.uival) #define I_UMASK 37 -#define def_logfile (sudo_defs_table[38].sd_un.str) +#define def_umask (sudo_defs_table[I_UMASK].sd_un.mode) #define I_LOGFILE 38 -#define def_mailerpath (sudo_defs_table[39].sd_un.str) +#define def_logfile (sudo_defs_table[I_LOGFILE].sd_un.str) #define I_MAILERPATH 39 -#define def_mailerflags (sudo_defs_table[40].sd_un.str) +#define def_mailerpath (sudo_defs_table[I_MAILERPATH].sd_un.str) #define I_MAILERFLAGS 40 -#define def_mailto (sudo_defs_table[41].sd_un.str) +#define def_mailerflags (sudo_defs_table[I_MAILERFLAGS].sd_un.str) #define I_MAILTO 41 -#define def_mailfrom (sudo_defs_table[42].sd_un.str) +#define def_mailto (sudo_defs_table[I_MAILTO].sd_un.str) #define I_MAILFROM 42 -#define def_mailsub (sudo_defs_table[43].sd_un.str) +#define def_mailfrom (sudo_defs_table[I_MAILFROM].sd_un.str) #define I_MAILSUB 43 -#define def_badpass_message (sudo_defs_table[44].sd_un.str) +#define def_mailsub (sudo_defs_table[I_MAILSUB].sd_un.str) #define I_BADPASS_MESSAGE 44 -#define def_lecture_status_dir (sudo_defs_table[45].sd_un.str) +#define def_badpass_message (sudo_defs_table[I_BADPASS_MESSAGE].sd_un.str) #define I_LECTURE_STATUS_DIR 45 -#define def_timestampdir (sudo_defs_table[46].sd_un.str) +#define def_lecture_status_dir (sudo_defs_table[I_LECTURE_STATUS_DIR].sd_un.str) #define I_TIMESTAMPDIR 46 -#define def_timestampowner (sudo_defs_table[47].sd_un.str) +#define def_timestampdir (sudo_defs_table[I_TIMESTAMPDIR].sd_un.str) #define I_TIMESTAMPOWNER 47 -#define def_exempt_group (sudo_defs_table[48].sd_un.str) +#define def_timestampowner (sudo_defs_table[I_TIMESTAMPOWNER].sd_un.str) #define I_EXEMPT_GROUP 48 -#define def_passprompt (sudo_defs_table[49].sd_un.str) +#define def_exempt_group (sudo_defs_table[I_EXEMPT_GROUP].sd_un.str) #define I_PASSPROMPT 49 -#define def_passprompt_override (sudo_defs_table[50].sd_un.flag) +#define def_passprompt (sudo_defs_table[I_PASSPROMPT].sd_un.str) #define I_PASSPROMPT_OVERRIDE 50 -#define def_runas_default (sudo_defs_table[51].sd_un.str) +#define def_passprompt_override (sudo_defs_table[I_PASSPROMPT_OVERRIDE].sd_un.flag) #define I_RUNAS_DEFAULT 51 -#define def_secure_path (sudo_defs_table[52].sd_un.str) +#define def_runas_default (sudo_defs_table[I_RUNAS_DEFAULT].sd_un.str) #define I_SECURE_PATH 52 -#define def_editor (sudo_defs_table[53].sd_un.str) +#define def_secure_path (sudo_defs_table[I_SECURE_PATH].sd_un.str) #define I_EDITOR 53 -#define def_listpw (sudo_defs_table[54].sd_un.tuple) +#define def_editor (sudo_defs_table[I_EDITOR].sd_un.str) #define I_LISTPW 54 -#define def_verifypw (sudo_defs_table[55].sd_un.tuple) +#define def_listpw (sudo_defs_table[I_LISTPW].sd_un.tuple) #define I_VERIFYPW 55 -#define def_noexec (sudo_defs_table[56].sd_un.flag) +#define def_verifypw (sudo_defs_table[I_VERIFYPW].sd_un.tuple) #define I_NOEXEC 56 -#define def_ignore_local_sudoers (sudo_defs_table[57].sd_un.flag) +#define def_noexec (sudo_defs_table[I_NOEXEC].sd_un.flag) #define I_IGNORE_LOCAL_SUDOERS 57 -#define def_closefrom (sudo_defs_table[58].sd_un.ival) +#define def_ignore_local_sudoers (sudo_defs_table[I_IGNORE_LOCAL_SUDOERS].sd_un.flag) #define I_CLOSEFROM 58 -#define def_closefrom_override (sudo_defs_table[59].sd_un.flag) +#define def_closefrom (sudo_defs_table[I_CLOSEFROM].sd_un.ival) #define I_CLOSEFROM_OVERRIDE 59 -#define def_setenv (sudo_defs_table[60].sd_un.flag) +#define def_closefrom_override (sudo_defs_table[I_CLOSEFROM_OVERRIDE].sd_un.flag) #define I_SETENV 60 -#define def_env_reset (sudo_defs_table[61].sd_un.flag) +#define def_setenv (sudo_defs_table[I_SETENV].sd_un.flag) #define I_ENV_RESET 61 -#define def_env_check (sudo_defs_table[62].sd_un.list) +#define def_env_reset (sudo_defs_table[I_ENV_RESET].sd_un.flag) #define I_ENV_CHECK 62 -#define def_env_delete (sudo_defs_table[63].sd_un.list) +#define def_env_check (sudo_defs_table[I_ENV_CHECK].sd_un.list) #define I_ENV_DELETE 63 -#define def_env_keep (sudo_defs_table[64].sd_un.list) +#define def_env_delete (sudo_defs_table[I_ENV_DELETE].sd_un.list) #define I_ENV_KEEP 64 -#define def_role (sudo_defs_table[65].sd_un.str) +#define def_env_keep (sudo_defs_table[I_ENV_KEEP].sd_un.list) #define I_ROLE 65 -#define def_type (sudo_defs_table[66].sd_un.str) +#define def_role (sudo_defs_table[I_ROLE].sd_un.str) #define I_TYPE 66 -#define def_env_file (sudo_defs_table[67].sd_un.str) +#define def_type (sudo_defs_table[I_TYPE].sd_un.str) #define I_ENV_FILE 67 -#define def_sudoers_locale (sudo_defs_table[68].sd_un.str) +#define def_env_file (sudo_defs_table[I_ENV_FILE].sd_un.str) #define I_SUDOERS_LOCALE 68 -#define def_visiblepw (sudo_defs_table[69].sd_un.flag) +#define def_sudoers_locale (sudo_defs_table[I_SUDOERS_LOCALE].sd_un.str) #define I_VISIBLEPW 69 -#define def_pwfeedback (sudo_defs_table[70].sd_un.flag) +#define def_visiblepw (sudo_defs_table[I_VISIBLEPW].sd_un.flag) #define I_PWFEEDBACK 70 -#define def_fast_glob (sudo_defs_table[71].sd_un.flag) +#define def_pwfeedback (sudo_defs_table[I_PWFEEDBACK].sd_un.flag) #define I_FAST_GLOB 71 -#define def_umask_override (sudo_defs_table[72].sd_un.flag) +#define def_fast_glob (sudo_defs_table[I_FAST_GLOB].sd_un.flag) #define I_UMASK_OVERRIDE 72 -#define def_log_input (sudo_defs_table[73].sd_un.flag) +#define def_umask_override (sudo_defs_table[I_UMASK_OVERRIDE].sd_un.flag) #define I_LOG_INPUT 73 -#define def_log_output (sudo_defs_table[74].sd_un.flag) +#define def_log_input (sudo_defs_table[I_LOG_INPUT].sd_un.flag) #define I_LOG_OUTPUT 74 -#define def_compress_io (sudo_defs_table[75].sd_un.flag) +#define def_log_output (sudo_defs_table[I_LOG_OUTPUT].sd_un.flag) #define I_COMPRESS_IO 75 -#define def_use_pty (sudo_defs_table[76].sd_un.flag) +#define def_compress_io (sudo_defs_table[I_COMPRESS_IO].sd_un.flag) #define I_USE_PTY 76 -#define def_group_plugin (sudo_defs_table[77].sd_un.str) +#define def_use_pty (sudo_defs_table[I_USE_PTY].sd_un.flag) #define I_GROUP_PLUGIN 77 -#define def_iolog_dir (sudo_defs_table[78].sd_un.str) +#define def_group_plugin (sudo_defs_table[I_GROUP_PLUGIN].sd_un.str) #define I_IOLOG_DIR 78 -#define def_iolog_file (sudo_defs_table[79].sd_un.str) +#define def_iolog_dir (sudo_defs_table[I_IOLOG_DIR].sd_un.str) #define I_IOLOG_FILE 79 -#define def_set_utmp (sudo_defs_table[80].sd_un.flag) +#define def_iolog_file (sudo_defs_table[I_IOLOG_FILE].sd_un.str) #define I_SET_UTMP 80 -#define def_utmp_runas (sudo_defs_table[81].sd_un.flag) +#define def_set_utmp (sudo_defs_table[I_SET_UTMP].sd_un.flag) #define I_UTMP_RUNAS 81 -#define def_privs (sudo_defs_table[82].sd_un.str) +#define def_utmp_runas (sudo_defs_table[I_UTMP_RUNAS].sd_un.flag) #define I_PRIVS 82 -#define def_limitprivs (sudo_defs_table[83].sd_un.str) +#define def_privs (sudo_defs_table[I_PRIVS].sd_un.str) #define I_LIMITPRIVS 83 -#define def_exec_background (sudo_defs_table[84].sd_un.flag) +#define def_limitprivs (sudo_defs_table[I_LIMITPRIVS].sd_un.str) #define I_EXEC_BACKGROUND 84 -#define def_pam_service (sudo_defs_table[85].sd_un.str) +#define def_exec_background (sudo_defs_table[I_EXEC_BACKGROUND].sd_un.flag) #define I_PAM_SERVICE 85 -#define def_pam_login_service (sudo_defs_table[86].sd_un.str) +#define def_pam_service (sudo_defs_table[I_PAM_SERVICE].sd_un.str) #define I_PAM_LOGIN_SERVICE 86 -#define def_pam_setcred (sudo_defs_table[87].sd_un.flag) +#define def_pam_login_service (sudo_defs_table[I_PAM_LOGIN_SERVICE].sd_un.str) #define I_PAM_SETCRED 87 -#define def_pam_session (sudo_defs_table[88].sd_un.flag) +#define def_pam_setcred (sudo_defs_table[I_PAM_SETCRED].sd_un.flag) #define I_PAM_SESSION 88 -#define def_maxseq (sudo_defs_table[89].sd_un.uival) +#define def_pam_session (sudo_defs_table[I_PAM_SESSION].sd_un.flag) #define I_MAXSEQ 89 -#define def_use_netgroups (sudo_defs_table[90].sd_un.flag) +#define def_maxseq (sudo_defs_table[I_MAXSEQ].sd_un.uival) #define I_USE_NETGROUPS 90 -#define def_sudoedit_checkdir (sudo_defs_table[91].sd_un.flag) +#define def_use_netgroups (sudo_defs_table[I_USE_NETGROUPS].sd_un.flag) #define I_SUDOEDIT_CHECKDIR 91 -#define def_sudoedit_follow (sudo_defs_table[92].sd_un.flag) +#define def_sudoedit_checkdir (sudo_defs_table[I_SUDOEDIT_CHECKDIR].sd_un.flag) #define I_SUDOEDIT_FOLLOW 92 -#define def_always_query_group_plugin (sudo_defs_table[93].sd_un.flag) -#define I_ALWAYS_QUERY_GROUP_PLUGIN93 -#define def_netgroup_tuple (sudo_defs_table[94].sd_un.flag) +#define def_sudoedit_follow (sudo_defs_table[I_SUDOEDIT_FOLLOW].sd_un.flag) +#define I_ALWAYS_QUERY_GROUP_PLUGIN 93 +#define def_always_query_group_plugin (sudo_defs_table[I_ALWAYS_QUERY_GROUP_PLUGIN].sd_un.flag) #define I_NETGROUP_TUPLE 94 -#define def_ignore_audit_errors (sudo_defs_table[95].sd_un.flag) +#define def_netgroup_tuple (sudo_defs_table[I_NETGROUP_TUPLE].sd_un.flag) #define I_IGNORE_AUDIT_ERRORS 95 -#define def_ignore_iolog_errors (sudo_defs_table[96].sd_un.flag) +#define def_ignore_audit_errors (sudo_defs_table[I_IGNORE_AUDIT_ERRORS].sd_un.flag) #define I_IGNORE_IOLOG_ERRORS 96 -#define def_ignore_logfile_errors (sudo_defs_table[97].sd_un.flag) +#define def_ignore_iolog_errors (sudo_defs_table[I_IGNORE_IOLOG_ERRORS].sd_un.flag) #define I_IGNORE_LOGFILE_ERRORS 97 -#define def_match_group_by_gid (sudo_defs_table[98].sd_un.flag) +#define def_ignore_logfile_errors (sudo_defs_table[I_IGNORE_LOGFILE_ERRORS].sd_un.flag) #define I_MATCH_GROUP_BY_GID 98 +#define def_match_group_by_gid (sudo_defs_table[I_MATCH_GROUP_BY_GID].sd_un.flag) enum def_tuple { never, diff --git a/plugins/sudoers/mkdefaults b/plugins/sudoers/mkdefaults index 72f56a333..a5a4edd50 100755 --- a/plugins/sudoers/mkdefaults +++ b/plugins/sudoers/mkdefaults @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl # # Generate sudo_defs_table and associated defines # @@ -9,6 +9,8 @@ # description (or NULL) # array of struct def_values if TYPE == T_TUPLE +use warnings; + # Deal with optional -o (output) argument if ($#ARGV > 0 && $ARGV[0] eq "-o") { shift; @@ -35,7 +37,7 @@ open(CFILE, ">$cfile") || die "$0: can't open $cfile: $!\n"; $count = 0; @tuple_values = ( "never" ); @records = (); -while() { +while () { chomp; s/\s*#.*$//; next if /^\s*$/; @@ -102,7 +104,7 @@ for ($i = 0; $i < $count; $i++) { # Print each record print CFILE "struct sudo_defs_types sudo_defs_table[] = {\n {\n"; for ($i = 0; $i < $count; $i++) { - &print_record($records[$i], $i); + print_record($records[$i], $i); } print CFILE "\tNULL, 0, NULL\n }\n};\n"; @@ -120,10 +122,15 @@ close(IN); close(HEADER); close(CFILE); +exit(0); + sub print_record { my ($rec, $recnum) = @_; my ($i, $v, $defname); + # each variable gets a macro to access its value + $defname = "I_" . uc($rec->[0]); + printf HEADER "#define %-23s %d\n", $defname, $recnum; for ($rec->[1]) { if (/^T_INT/) { $v = "ival"; } elsif (/^T_UINT/) { $v = "uival"; } @@ -137,14 +144,9 @@ sub print_record { elsif (/^T_FLOAT/) { $v = "fval"; } else { die "$0: unknown defaults type: $_\n"; } } - printf HEADER "#define %-23s (sudo_defs_table[$recnum].sd_un.${v})\n", + printf HEADER "#define %-23s (sudo_defs_table[$defname].sd_un.${v})\n", "def_$rec->[0]"; - $defname = "I_" . uc($rec->[0]); - printf HEADER "#define %-24s%d", $defname, $recnum; - #print HEADER "\t/* $rec->[2] */" if defined($rec->[2]); - print HEADER "\n"; - print CFILE "\t\"$rec->[0]\", $rec->[1],\n\t$rec->[2],\n"; if (defined($rec->[3])) { printf CFILE "\tdef_data_$rec->[0],\n";