mirror of
https://github.com/sudo-project/sudo.git
synced 2025-08-31 22:35:10 +00:00
Convert NEW_DEFAULT anf NEW_MEMBER into static functions.
This commit is contained in:
84
gram.y
84
gram.y
@@ -75,6 +75,8 @@ struct userspec_list userspecs;
|
||||
*/
|
||||
static void add_defaults __P((int, struct member *, struct defaults *));
|
||||
static void add_userspec __P((struct member *, struct privilege *));
|
||||
static struct defaults *new_default __P((char *, char *, int));
|
||||
static struct member *new_member __P((char *, int));
|
||||
void yyerror __P((const char *));
|
||||
|
||||
void
|
||||
@@ -215,19 +217,19 @@ defaults_list : defaults_entry
|
||||
;
|
||||
|
||||
defaults_entry : DEFVAR {
|
||||
NEW_DEFAULT($$, $1, NULL, TRUE);
|
||||
$$ = new_default($1, NULL, TRUE);
|
||||
}
|
||||
| '!' DEFVAR {
|
||||
NEW_DEFAULT($$, $2, NULL, FALSE);
|
||||
$$ = new_default($2, NULL, FALSE);
|
||||
}
|
||||
| DEFVAR '=' WORD {
|
||||
NEW_DEFAULT($$, $1, $3, TRUE);
|
||||
$$ = new_default($1, $3, TRUE);
|
||||
}
|
||||
| DEFVAR '+' WORD {
|
||||
NEW_DEFAULT($$, $1, $3, '+');
|
||||
$$ = new_default($1, $3, '+');
|
||||
}
|
||||
| DEFVAR '-' WORD {
|
||||
NEW_DEFAULT($$, $1, $3, '-');
|
||||
$$ = new_default($1, $3, '-');
|
||||
}
|
||||
;
|
||||
|
||||
@@ -278,19 +280,19 @@ ophost : host {
|
||||
;
|
||||
|
||||
host : ALIAS {
|
||||
NEW_MEMBER($$, $1, ALIAS);
|
||||
$$ = new_member($1, ALIAS);
|
||||
}
|
||||
| ALL {
|
||||
NEW_MEMBER($$, NULL, ALL);
|
||||
$$ = new_member(NULL, ALL);
|
||||
}
|
||||
| NETGROUP {
|
||||
NEW_MEMBER($$, $1, NETGROUP);
|
||||
$$ = new_member($1, NETGROUP);
|
||||
}
|
||||
| NTWKADDR {
|
||||
NEW_MEMBER($$, $1, NTWKADDR);
|
||||
$$ = new_member($1, NTWKADDR);
|
||||
}
|
||||
| WORD {
|
||||
NEW_MEMBER($$, $1, WORD);
|
||||
$$ = new_member($1, WORD);
|
||||
}
|
||||
;
|
||||
|
||||
@@ -348,19 +350,19 @@ oprunasuser : runasuser {
|
||||
;
|
||||
|
||||
runasuser : ALIAS {
|
||||
NEW_MEMBER($$, $1, ALIAS);
|
||||
$$ = new_member($1, ALIAS);
|
||||
}
|
||||
| ALL {
|
||||
NEW_MEMBER($$, NULL, ALL);
|
||||
$$ = new_member(NULL, ALL);
|
||||
}
|
||||
| NETGROUP {
|
||||
NEW_MEMBER($$, $1, NETGROUP);
|
||||
$$ = new_member($1, NETGROUP);
|
||||
}
|
||||
| USERGROUP {
|
||||
NEW_MEMBER($$, $1, USERGROUP);
|
||||
$$ = new_member($1, USERGROUP);
|
||||
}
|
||||
| WORD {
|
||||
NEW_MEMBER($$, $1, WORD);
|
||||
$$ = new_member($1, WORD);
|
||||
}
|
||||
;
|
||||
|
||||
@@ -388,16 +390,16 @@ cmndtag : /* empty */ {
|
||||
;
|
||||
|
||||
cmnd : ALL {
|
||||
NEW_MEMBER($$, NULL, ALL);
|
||||
$$ = new_member(NULL, ALL);
|
||||
}
|
||||
| ALIAS {
|
||||
NEW_MEMBER($$, $1, ALIAS);
|
||||
$$ = new_member($1, ALIAS);
|
||||
}
|
||||
| COMMAND {
|
||||
struct sudo_command *c = emalloc(sizeof(*c));
|
||||
c->cmnd = $1.cmnd;
|
||||
c->args = $1.args;
|
||||
NEW_MEMBER($$, (char *)c, COMMAND);
|
||||
$$ = new_member((char *)c, COMMAND);
|
||||
}
|
||||
;
|
||||
|
||||
@@ -485,23 +487,59 @@ opuser : user {
|
||||
;
|
||||
|
||||
user : ALIAS {
|
||||
NEW_MEMBER($$, $1, ALIAS);
|
||||
$$ = new_member($1, ALIAS);
|
||||
}
|
||||
| ALL {
|
||||
NEW_MEMBER($$, NULL, ALL);
|
||||
$$ = new_member(NULL, ALL);
|
||||
}
|
||||
| NETGROUP {
|
||||
NEW_MEMBER($$, $1, NETGROUP);
|
||||
$$ = new_member($1, NETGROUP);
|
||||
}
|
||||
| USERGROUP {
|
||||
NEW_MEMBER($$, $1, USERGROUP);
|
||||
$$ = new_member($1, USERGROUP);
|
||||
}
|
||||
| WORD {
|
||||
NEW_MEMBER($$, $1, WORD);
|
||||
$$ = new_member($1, WORD);
|
||||
}
|
||||
;
|
||||
|
||||
%%
|
||||
static struct defaults *
|
||||
new_default(var, val, op)
|
||||
char *var;
|
||||
char *val;
|
||||
int op;
|
||||
{
|
||||
struct defaults *d;
|
||||
|
||||
d = emalloc(sizeof(struct defaults));
|
||||
d->var = var;
|
||||
d->val = val;
|
||||
LH_INIT(&d->binding);
|
||||
d->type = 0;
|
||||
d->op = op;
|
||||
d->prev = d;
|
||||
d->next = NULL;
|
||||
|
||||
return(d);
|
||||
}
|
||||
|
||||
static struct member *
|
||||
new_member(name, type)
|
||||
char *name;
|
||||
int type;
|
||||
{
|
||||
struct member *m;
|
||||
|
||||
m = emalloc(sizeof(struct member));
|
||||
m->name = name;
|
||||
m->type = type;
|
||||
m->prev = m;
|
||||
m->next = NULL;
|
||||
|
||||
return(m);
|
||||
}
|
||||
|
||||
/*
|
||||
* Add a list of defaults structures to the defaults list.
|
||||
* The binding, if non-NULL, specifies a list of hosts, users, or
|
||||
|
25
parse.h
25
parse.h
@@ -148,31 +148,6 @@ struct defaults {
|
||||
struct defaults *prev, *next;
|
||||
};
|
||||
|
||||
/*
|
||||
* Allocate space for a defaults entry and populate it.
|
||||
*/
|
||||
#undef NEW_DEFAULT
|
||||
#define NEW_DEFAULT(r, v1, v2, o) do { \
|
||||
(r) = emalloc(sizeof(struct defaults)); \
|
||||
(r)->var = (v1); \
|
||||
(r)->val = (v2); \
|
||||
(r)->op = (o); \
|
||||
(r)->prev = (r); \
|
||||
(r)->next = NULL; \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* Allocate space for a member and populate it.
|
||||
*/
|
||||
#undef NEW_MEMBER
|
||||
#define NEW_MEMBER(r, n, t) do { \
|
||||
(r) = emalloc(sizeof(struct member)); \
|
||||
(r)->name = (n); \
|
||||
(r)->type = (t); \
|
||||
(r)->prev = (r); \
|
||||
(r)->next = NULL; \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* Append one queue (or single entry) to another using the
|
||||
* circular properties of the prev pointer to simplify the logic.
|
||||
|
Reference in New Issue
Block a user