Diff for /embedaddon/sudo/plugins/sudoers/match.c between versions 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 2012/05/29 12:26:49 version 1.1.1.3, 2012/10/09 09:29:52
Line 154  userlist_matches(struct passwd *pw, struct member_list Line 154  userlist_matches(struct passwd *pw, struct member_list
  * Returns ALLOW, DENY or UNSPEC.   * Returns ALLOW, DENY or UNSPEC.
  */   */
 static int  static int
_runaslist_matches(struct member_list *user_list, struct member_list *group_list)_runaslist_matches(struct member_list *user_list,
     struct member_list *group_list, struct member **matching_user,
     struct member **matching_group)
 {  {
     struct member *m;      struct member *m;
     struct alias *a;      struct alias *a;
Line 183  _runaslist_matches(struct member_list *user_list, stru Line 185  _runaslist_matches(struct member_list *user_list, stru
                     break;                      break;
                 case ALIAS:                  case ALIAS:
                     if ((a = alias_find(m->name, RUNASALIAS)) != NULL) {                      if ((a = alias_find(m->name, RUNASALIAS)) != NULL) {
                        rval = _runaslist_matches(&a->members, &empty);                        rval = _runaslist_matches(&a->members, &empty,
                             matching_user, NULL);
                         if (rval != UNSPEC)                          if (rval != UNSPEC)
                             user_matched = m->negated ? !rval : rval;                              user_matched = m->negated ? !rval : rval;
                         break;                          break;
Line 193  _runaslist_matches(struct member_list *user_list, stru Line 196  _runaslist_matches(struct member_list *user_list, stru
                     if (userpw_matches(m->name, runas_pw->pw_name, runas_pw))                      if (userpw_matches(m->name, runas_pw->pw_name, runas_pw))
                         user_matched = !m->negated;                          user_matched = !m->negated;
                     break;                      break;
                   case MYSELF:
                       if (!ISSET(sudo_user.flags, RUNAS_USER_SPECIFIED) ||
                           strcmp(user_name, runas_pw->pw_name) == 0)
                           user_matched = !m->negated;
                       break;
             }              }
            if (user_matched != UNSPEC)            if (user_matched != UNSPEC) {
                 if (matching_user != NULL && m->type != ALIAS)
                     *matching_user = m;
                 break;                  break;
               }
         }          }
     }      }
   
Line 211  _runaslist_matches(struct member_list *user_list, stru Line 222  _runaslist_matches(struct member_list *user_list, stru
                     break;                      break;
                 case ALIAS:                  case ALIAS:
                     if ((a = alias_find(m->name, RUNASALIAS)) != NULL) {                      if ((a = alias_find(m->name, RUNASALIAS)) != NULL) {
                        rval = _runaslist_matches(&empty, &a->members);                        rval = _runaslist_matches(&empty, &a->members,
                             NULL, matching_group);
                         if (rval != UNSPEC)                          if (rval != UNSPEC)
                             group_matched = m->negated ? !rval : rval;                              group_matched = m->negated ? !rval : rval;
                         break;                          break;
Line 222  _runaslist_matches(struct member_list *user_list, stru Line 234  _runaslist_matches(struct member_list *user_list, stru
                         group_matched = !m->negated;                          group_matched = !m->negated;
                     break;                      break;
             }              }
            if (group_matched != UNSPEC)            if (group_matched != UNSPEC) {
                 if (matching_group != NULL && m->type != ALIAS)
                     *matching_group = m;
                 break;                  break;
               }
         }          }
         if (group_matched == UNSPEC) {          if (group_matched == UNSPEC) {
             if (runas_pw != NULL && runas_pw->pw_gid == runas_gr->gr_gid)              if (runas_pw != NULL && runas_pw->pw_gid == runas_gr->gr_gid)
Line 239  _runaslist_matches(struct member_list *user_list, stru Line 254  _runaslist_matches(struct member_list *user_list, stru
 }  }
   
 int  int
runaslist_matches(struct member_list *user_list, struct member_list *group_list)runaslist_matches(struct member_list *user_list,
     struct member_list *group_list, struct member **matching_user,
     struct member **matching_group)
 {  {
     alias_seqno++;      alias_seqno++;
     return _runaslist_matches(user_list ? user_list : &empty,      return _runaslist_matches(user_list ? user_list : &empty,
        group_list ? group_list : &empty);        group_list ? group_list : &empty, matching_user, matching_group);
 }  }
   
 /*  /*
Line 700  usergr_matches(char *group, char *user, struct passwd  Line 717  usergr_matches(char *group, char *user, struct passwd 
   
 done:  done:
     if (pw0 != NULL)      if (pw0 != NULL)
        pw_delref(pw0);        sudo_pw_delref(pw0);
   
     debug_return_bool(matched);      debug_return_bool(matched);
 }  }

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.3


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