move update_defaults() to parse.c

This commit is contained in:
Todd C. Miller
2007-12-31 12:54:47 +00:00
parent ae2ae34528
commit 3008bb494a
4 changed files with 60 additions and 43 deletions

View File

@@ -482,48 +482,6 @@ init_defaults()
firsttime = 0; firsttime = 0;
} }
/*
* Update the defaults based on what was set by sudoers.
* If skip_cmnd is 1, skip DEFAULTS_CMND, if it is 0, skip all others.
* Returns TRUE on success and FALSE on failure.
*/
int
update_defaults(skip_cmnd)
int skip_cmnd;
{
struct defaults *def;
tq_foreach_fwd(&defaults, def) {
if (skip_cmnd == (def->type == DEFAULTS_CMND))
continue;
switch (def->type) {
case DEFAULTS:
if (!set_default(def->var, def->val, def->op))
return(FALSE);
case DEFAULTS_USER:
if (userlist_matches(sudo_user.pw, &def->binding) &&
!set_default(def->var, def->val, def->op))
return(FALSE);
break;
case DEFAULTS_RUNAS:
if (runaslist_matches(&def->binding, NULL) &&
!set_default(def->var, def->val, def->op))
return(FALSE);
break;
case DEFAULTS_HOST:
if (hostlist_matches(&def->binding) &&
!set_default(def->var, def->val, def->op))
return(FALSE);
break;
case DEFAULTS_CMND:
if (cmndlist_matches(&def->binding) &&
!set_default(def->var, def->val, def->op))
return(FALSE);
}
}
return(TRUE);
}
static int static int
store_int(val, def, op) store_int(val, def, op)
char *val; char *val;

46
parse.c
View File

@@ -122,6 +122,51 @@ sudo_file_parse(nss)
return(0); return(0);
} }
/*
* Update the defaults based on what was set by sudoers.
* If skip_cmnd is 1, skip DEFAULTS_CMND, if it is 0, skip all others.
* Returns TRUE on success and FALSE on failure.
*/
int
update_defaults(skip_cmnd)
int skip_cmnd;
{
struct defaults *def;
tq_foreach_fwd(&defaults, def) {
if (skip_cmnd == (def->type == DEFAULTS_CMND))
continue;
switch (def->type) {
case DEFAULTS:
if (!set_default(def->var, def->val, def->op))
return(FALSE);
case DEFAULTS_USER:
if (userlist_matches(sudo_user.pw, &def->binding) &&
!set_default(def->var, def->val, def->op))
return(FALSE);
break;
case DEFAULTS_RUNAS:
if (runaslist_matches(&def->binding, NULL) &&
!set_default(def->var, def->val, def->op))
return(FALSE);
break;
case DEFAULTS_HOST:
if (hostlist_matches(&def->binding) &&
!set_default(def->var, def->val, def->op))
return(FALSE);
break;
case DEFAULTS_CMND:
if (cmndlist_matches(&def->binding) &&
!set_default(def->var, def->val, def->op))
return(FALSE);
}
}
return(TRUE);
}
/*
* Wrapper around update_defaults() for nsswitch code.
*/
int int
sudo_file_setdefs(nss) sudo_file_setdefs(nss)
struct sudo_nss *nss; struct sudo_nss *nss;
@@ -129,7 +174,6 @@ sudo_file_setdefs(nss)
if (nss->handle == NULL) if (nss->handle == NULL)
return(-1); return(-1);
/* XXX - move guts of update_defaults here */
if (!update_defaults(SKIP_CMND)) if (!update_defaults(SKIP_CMND))
return(-1); return(-1);
return(0); return(0);

View File

@@ -297,6 +297,13 @@ main(argc, argv)
exit(0); exit(0);
} }
int
update_defaults(skip_cmnd)
int skip_cmnd;
{
return(TRUE);
}
void void
sudo_setspent() sudo_setspent()
{ {

View File

@@ -572,6 +572,14 @@ user_is_exempt()
return(FALSE); return(FALSE);
} }
/* STUB */
int
update_defaults(skip_cmnd)
int skip_cmnd;
{
return(TRUE);
}
/* STUB */ /* STUB */
void void
sudo_setspent() sudo_setspent()