[apparmor] [PATCH] parser: Honor the --namespace-string commandline option

Seth Arnold seth.arnold at canonical.com
Mon Dec 14 23:55:33 UTC 2015


On Mon, Dec 14, 2015 at 05:21:40PM -0600, Tyler Hicks wrote:
> https://launchpad.net/bugs/1526085
> 
> Revno 2934 'Add fns to handle profile removal to the kernel interface'
> introduced a regression in the parser's namespace support by causing the
> --namespace-string option to be ignored. This resulted in the profile(s)
> being loaded into the global namespace rather than the namespace
> specified on the command line.
> 
> This patch fixes the bug by setting the Profile object's ns member, if
> the --namespace-string option was specified, immediately after the
> Profile object is allocated.
> 
> Signed-off-by: Tyler Hicks <tyhicks at canonical.com>

Acked-by: Seth Arnold <seth.arnold at canonical.com>

Acked for both trunk and 2.10.

Thanks

> ---
> 
> Nominated for 2.10 and trunk.
> 
> Tyler
> 
>  parser/parser_yacc.y | 22 +++++++++++++++++-----
>  1 file changed, 17 insertions(+), 5 deletions(-)
> 
> diff --git a/parser/parser_yacc.y b/parser/parser_yacc.y
> index d17eab9..2a48367 100644
> --- a/parser/parser_yacc.y
> +++ b/parser/parser_yacc.y
> @@ -318,6 +318,13 @@ profile_base: TOK_ID opt_id_or_var flags TOK_OPEN rules TOK_CLOSE
>  			yyerror(_("Memory allocation error."));
>  		}
>  
> +		/* Honor the --namespace-string command line option */
> +		if (profile_ns) {
> +			prof->ns = strdup(profile_ns);
> +			if (!prof->ns)
> +				yyerror(_("Memory allocation error."));
> +		}
> +
>  		prof->name = $1;
>  		prof->attachment = $2;
>  		if ($2 && !($2[0] == '/' || strncmp($2, "@{", 2) == 0))
> @@ -351,12 +358,17 @@ profile:  opt_profile_flag opt_ns profile_base
>  		if ($3->name[0] != '/' && !($1 || $2))
>  			yyerror(_("Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'."));
>  
> -		if ($2 && profile_ns) {
> -			pwarn("%s: -n %s overriding policy specified namespace :%s:\n", progname, profile_ns, $2);
> +		if (prof->ns) {
> +			/**
> +			 * Print warning if the profile specified a namespace
> +			 * different than the one specified with the
> +			 * --namespace-string commandline option
> +			 */
> +			if ($2 && strcmp(prof->ns, $2)) {
> +				pwarn("%s: -n %s overriding policy specified namespace :%s:\n",
> +				      progname, prof->ns, $2);
> +			}
>  			free($2);
> -			prof->ns = strdup(profile_ns);
> -			if (!prof->ns)
> -				yyerror(_("Memory allocation error."));
>  		} else
>  			prof->ns = $2;
>  		if ($1 == 2)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: Digital signature
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20151214/e1f44c7c/attachment.pgp>


More information about the AppArmor mailing list