From 21f0ea4d68aa0632fee851290dd621054f35c785 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Wed, 5 Sep 2007 18:45:26 +0000 Subject: [PATCH] Each entry in a cmndlist now has an associated runaslist so no need to keep track of the most recent non-NULL one. --- match.c | 2 +- parse.c | 12 ++---------- testsudoers.c | 6 +----- 3 files changed, 4 insertions(+), 16 deletions(-) diff --git a/match.c b/match.c index 3b84e8472..b070f3a18 100644 --- a/match.c +++ b/match.c @@ -156,7 +156,7 @@ runaslist_matches(list) struct alias *a; int rval, matched = UNSPEC; - if (list == NULL) + if (lh_empty(list)) return(userpw_matches(def_runas_default, runas_pw->pw_name, runas_pw)); lh_foreach_rev(list, m) { diff --git a/parse.c b/parse.c index dc7ec5139..5e28b68f9 100644 --- a/parse.c +++ b/parse.c @@ -87,7 +87,6 @@ sudoers_lookup(pwflag) int validated, match, host_match, runas_match, cmnd_match; struct cmndspec *cs; struct cmndtag *tags = NULL; - struct member_list *runas; struct privilege *priv; struct userspec *us; @@ -157,11 +156,8 @@ sudoers_lookup(pwflag) CLR(validated, FLAG_NO_HOST); else continue; - runas = NULL; lh_foreach_rev(&priv->cmndlist, cs) { - if (!lh_empty(&cs->runaslist)) - runas = &cs->runaslist; - runas_match = runaslist_matches(runas); + runas_match = runaslist_matches(&cs->runaslist); if (runas_match == ALLOW) { cmnd_match = cmnd_matches(cs->cmnd); if (cmnd_match != UNSPEC) { @@ -422,7 +418,6 @@ display_cmnd(v, pw) { struct cmndspec *cs; struct member *match; - struct member_list *runas; struct privilege *priv; struct userspec *us; int rval = 1; @@ -442,11 +437,8 @@ display_cmnd(v, pw) host_match = hostlist_matches(&priv->hostlist); if (host_match != ALLOW) continue; - runas = NULL; lh_foreach_rev(&priv->cmndlist, cs) { - if (!lh_empty(&cs->runaslist) != NULL) - runas = &cs->runaslist; - runas_match = runaslist_matches(runas); + runas_match = runaslist_matches(&cs->runaslist); if (runas_match == ALLOW) { cmnd_match = cmnd_matches(cs->cmnd); if (cmnd_match != UNSPEC) { diff --git a/testsudoers.c b/testsudoers.c index f5507724d..582a77e9e 100644 --- a/testsudoers.c +++ b/testsudoers.c @@ -125,7 +125,6 @@ main(argc, argv) char **argv; { struct cmndspec *cs; - struct member_list *runas; struct privilege *priv; struct userspec *us; char *p, *grfile, *pwfile, *uflag, hbuf[MAXHOSTNAMELEN]; @@ -278,11 +277,8 @@ main(argc, argv) putchar('\n'); if (hostlist_matches(&priv->hostlist) == ALLOW) { puts("\thost matched"); - runas = NULL; lh_foreach_rev(&priv->cmndlist, cs) { - if (!lh_empty(&cs->runaslist)) - runas = &cs->runaslist; - if (runaslist_matches(runas) == ALLOW) { + if (runaslist_matches(&cs->runaslist) == ALLOW) { puts("\trunas matched"); rval = cmnd_matches(cs->cmnd); if (rval != UNSPEC) -- 2.40.0