[apparmor] [PATCH] parser: Clean up pivot_root target parsing

John Johansen john.johansen at canonical.com
Sat Feb 27 00:26:57 UTC 2016


On 02/26/2016 04:07 PM, Tyler Hicks wrote:
> Instead of reusing opt_named_transition and be forced to reconstruct the
> target path when is looks like ":odd:target", create simpler grammer
> rules that have nothing to do with named transitions and namespaces.
> 
> Signed-off-by: Tyler Hicks <tyhicks at canonical.com>

Acked-by: John Johansen <john.johansen at canonical.com>

> ---
>  parser/parser_yacc.y | 22 ++++++----------------
>  1 file changed, 6 insertions(+), 16 deletions(-)
> 
> diff --git a/parser/parser_yacc.y b/parser/parser_yacc.y
> index 1f00480..7af78ce 100644
> --- a/parser/parser_yacc.y
> +++ b/parser/parser_yacc.y
> @@ -276,6 +276,7 @@ void add_local_entry(Profile *prof);
>  %type <fmode>	net_perms
>  %type <fmode>	opt_net_perm
>  %type <unix_entry>	unix_rule
> +%type <id>	opt_target
>  %type <transition> opt_named_transition
>  %type <boolean> opt_unsafe
>  %type <boolean> opt_file
> @@ -1044,6 +1045,9 @@ expr:	TOK_DEFINED TOK_BOOL_VAR
>  id_or_var: TOK_ID { $$ = $1; }
>  id_or_var: TOK_SET_VAR { $$ = $1; };
>  
> +opt_target: /* nothing */ { $$ = NULL; }
> +opt_target: TOK_ARROW id_or_var { $$ = $2; };
> +
>  opt_named_transition:
>  	{ /* nothing */
>  		parse_named_transition_target(&$$, NULL);
> @@ -1242,23 +1246,9 @@ mnt_rule: TOK_UMOUNT opt_conds opt_id TOK_END_OF_RULE
>  		$$ = do_mnt_rule($2, NULL, NULL, $3, AA_MAY_UMOUNT);
>  	}
>  
> -mnt_rule: TOK_PIVOTROOT opt_conds opt_id opt_named_transition TOK_END_OF_RULE
> +mnt_rule: TOK_PIVOTROOT opt_conds opt_id opt_target TOK_END_OF_RULE
>  	{
> -		char *name = NULL;
> -		if ($4.present && $4.ns) {
> -			name = (char *) malloc(strlen($4.ns) +
> -					       strlen($4.name) + 3);
> -			if (!name) {
> -				PERROR("Memory allocation error\n");
> -				exit(1);
> -			}
> -			sprintf(name, ":%s:%s", $4.ns, $4.name);
> -			free($4.ns);
> -			free($4.name);
> -		} else if ($4.present)
> -			name = $4.name;
> -
> -		$$ = do_pivot_rule($2, $3, name);
> +		$$ = do_pivot_rule($2, $3, $4);
>  	}
>  
>  dbus_perm: TOK_VALUE
> 




More information about the AppArmor mailing list