On 05/25/2016 01:59 PM, Tyler Hicks wrote: > Make future modifications to the change_profile grammar rules easier by > simplifying things. First, the change_profile rule handling is collapsed > into a single grammar rule. The inputs to the grammar rule are given > helpful variable names to make it harder to mix up which variable we're > dealing with. Finally, the two separate calls to new_entry() are unified > into a single call. > > Signed-off-by: Tyler Hicks <[email protected]>
Acked-by: John Johansen <[email protected]> > --- > parser/parser_yacc.y | 30 +++++++++++++----------------- > 1 file changed, 13 insertions(+), 17 deletions(-) > > diff --git a/parser/parser_yacc.y b/parser/parser_yacc.y > index 2d95066..91c6d68 100644 > --- a/parser/parser_yacc.y > +++ b/parser/parser_yacc.y > @@ -241,7 +241,6 @@ void add_local_entry(Profile *prof); > %type <flags> flagval > %type <cap> caps > %type <cap> capability > -%type <id> change_profile_head > %type <user_entry> change_profile > %type <set_var> TOK_SET_VAR > %type <bool_var> TOK_BOOL_VAR > @@ -1475,28 +1474,25 @@ file_mode: TOK_MODE > free($1); > } > > -change_profile_head: TOK_CHANGE_PROFILE opt_id > - { > - if ($2 && !($2[0] == '/' || strncmp($2, "@{", 2) == 0)) > - yyerror(_("Exec condition must begin with '/'.")); > - $$ = $2; > - } > - > -change_profile: change_profile_head opt_named_transition TOK_END_OF_RULE > +change_profile: TOK_CHANGE_PROFILE opt_id opt_named_transition > TOK_END_OF_RULE > { > struct cod_entry *entry; > + char *exec = $2; > + char *target = $3; > > - if ($2) { > - PDEBUG("Matched change_profile: tok_id (%s)\n", $2); > - entry = new_entry($2, AA_CHANGE_PROFILE, $1); > - } else { > - char *rule = strdup("**"); > - if (!rule) > - yyerror(_("Memory allocation error.")); > + if (exec && !(exec[0] == '/' || strncmp(exec, "@{", 2) == 0)) > + yyerror(_("Exec condition must begin with '/'.")); > > + if (target) { > + PDEBUG("Matched change_profile: tok_id (%s)\n", target); > + } else { > PDEBUG("Matched change_profile,\n"); > - entry = new_entry(rule, AA_CHANGE_PROFILE, $1); > + target = strdup("**"); > + if (!target) > + yyerror(_("Memory allocation error.")); > } > + > + entry = new_entry(target, AA_CHANGE_PROFILE, exec); > if (!entry) > yyerror(_("Memory allocation error.")); > > -- AppArmor mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor
