version 1.1.1.2, 2012/05/29 12:26:49
|
version 1.1.1.4, 2013/07/22 10:46:12
|
Line 1
|
Line 1
|
/* |
/* |
* Copyright (c) 1999-2005, 2007-2011 | * Copyright (c) 1999-2005, 2007-2013 |
* Todd C. Miller <Todd.Miller@courtesan.com> |
* Todd C. Miller <Todd.Miller@courtesan.com> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
Line 22
|
Line 22
|
#include <config.h> |
#include <config.h> |
|
|
#include <sys/types.h> |
#include <sys/types.h> |
#include <sys/param.h> |
|
#include <stdio.h> |
#include <stdio.h> |
#ifdef STDC_HEADERS |
#ifdef STDC_HEADERS |
# include <stdlib.h> |
# include <stdlib.h> |
Line 422 init_defaults(void)
|
Line 421 init_defaults(void)
|
def_env_reset = ENV_RESET; |
def_env_reset = ENV_RESET; |
def_set_logname = true; |
def_set_logname = true; |
def_closefrom = STDERR_FILENO + 1; |
def_closefrom = STDERR_FILENO + 1; |
|
#ifdef NO_PAM_SESSION |
|
def_pam_session = false; |
|
#else |
|
def_pam_session = true; |
|
#endif |
|
|
/* Syslog options need special care since they both strings and ints */ |
/* Syslog options need special care since they both strings and ints */ |
#if (LOGGING & SLOG_SYSLOG) |
#if (LOGGING & SLOG_SYSLOG) |
Line 452 init_defaults(void)
|
Line 456 init_defaults(void)
|
|
|
/* Now do the strings */ |
/* Now do the strings */ |
def_mailto = estrdup(MAILTO); |
def_mailto = estrdup(MAILTO); |
def_mailsub = estrdup(_(MAILSUBJECT)); | def_mailsub = estrdup(N_(MAILSUBJECT)); |
def_badpass_message = estrdup(_(INCORRECT_PASSWORD)); |
def_badpass_message = estrdup(_(INCORRECT_PASSWORD)); |
def_timestampdir = estrdup(_PATH_SUDO_TIMEDIR); |
def_timestampdir = estrdup(_PATH_SUDO_TIMEDIR); |
def_passprompt = estrdup(_(PASSPROMPT)); |
def_passprompt = estrdup(_(PASSPROMPT)); |
Line 485 init_defaults(void)
|
Line 489 init_defaults(void)
|
* Update the defaults based on what was set by sudoers. |
* Update the defaults based on what was set by sudoers. |
* Pass in an OR'd list of which default types to update. |
* Pass in an OR'd list of which default types to update. |
*/ |
*/ |
int | bool |
update_defaults(int what) |
update_defaults(int what) |
{ |
{ |
struct defaults *def; |
struct defaults *def; |
Line 500 update_defaults(int what)
|
Line 504 update_defaults(int what)
|
rc = false; |
rc = false; |
break; |
break; |
case DEFAULTS_USER: |
case DEFAULTS_USER: |
|
#if 1 |
|
if (ISSET(what, SETDEF_USER)) { |
|
int m; |
|
m = userlist_matches(sudo_user.pw, &def->binding); |
|
if (m == ALLOW) { |
|
if (!set_default(def->var, def->val, def->op)) |
|
rc = false; |
|
} |
|
} |
|
#else |
if (ISSET(what, SETDEF_USER) && |
if (ISSET(what, SETDEF_USER) && |
userlist_matches(sudo_user.pw, &def->binding) == ALLOW && |
userlist_matches(sudo_user.pw, &def->binding) == ALLOW && |
!set_default(def->var, def->val, def->op)) |
!set_default(def->var, def->val, def->op)) |
rc = false; |
rc = false; |
|
#endif |
break; |
break; |
case DEFAULTS_RUNAS: |
case DEFAULTS_RUNAS: |
if (ISSET(what, SETDEF_RUNAS) && |
if (ISSET(what, SETDEF_RUNAS) && |
runaslist_matches(&def->binding, NULL) == ALLOW && | runaslist_matches(&def->binding, NULL, NULL, NULL) == ALLOW && |
!set_default(def->var, def->val, def->op)) |
!set_default(def->var, def->val, def->op)) |
rc = false; |
rc = false; |
break; |
break; |
Line 523 update_defaults(int what)
|
Line 538 update_defaults(int what)
|
!set_default(def->var, def->val, def->op)) |
!set_default(def->var, def->val, def->op)) |
rc = false; |
rc = false; |
break; |
break; |
|
} |
|
} |
|
debug_return_bool(rc); |
|
} |
|
|
|
/* |
|
* Check the defaults entries without actually setting them. |
|
* Pass in an OR'd list of which default types to check. |
|
*/ |
|
bool |
|
check_defaults(int what, bool quiet) |
|
{ |
|
struct sudo_defs_types *cur; |
|
struct defaults *def; |
|
bool rc = true; |
|
debug_decl(check_defaults, SUDO_DEBUG_DEFAULTS) |
|
|
|
tq_foreach_fwd(&defaults, def) { |
|
switch (def->type) { |
|
case DEFAULTS: |
|
if (!ISSET(what, SETDEF_GENERIC)) |
|
continue; |
|
break; |
|
case DEFAULTS_USER: |
|
if (!ISSET(what, SETDEF_USER)) |
|
continue; |
|
break; |
|
case DEFAULTS_RUNAS: |
|
if (!ISSET(what, SETDEF_RUNAS)) |
|
continue; |
|
break; |
|
case DEFAULTS_HOST: |
|
if (!ISSET(what, SETDEF_HOST)) |
|
continue; |
|
break; |
|
case DEFAULTS_CMND: |
|
if (!ISSET(what, SETDEF_CMND)) |
|
continue; |
|
break; |
|
} |
|
for (cur = sudo_defs_table; cur->name != NULL; cur++) { |
|
if (strcmp(def->var, cur->name) == 0) |
|
break; |
|
} |
|
if (cur->name == NULL) { |
|
if (!quiet) |
|
warningx(_("unknown defaults entry `%s'"), def->var); |
|
rc = false; |
} |
} |
} |
} |
debug_return_bool(rc); |
debug_return_bool(rc); |