[apparmor] [PATCH 07/13] Make expressing all capabilities easier
Kees Cook
kees at ubuntu.com
Tue Feb 14 19:21:21 UTC 2012
On Tue, Feb 14, 2012 at 09:32:29AM -0800, John Johansen wrote:
> Allow the capability rule to be bare to represent all capabilities similar
> to how network, and other rule types work.
>
> capability,
>
> Signed-off-by: John Johansen <john.johansen at canonical.com>
> ---
> parser/parser_yacc.y | 18 +++++++-----------
> parser/tst/simple_tests/capability/bad_3.sd | 9 +++++++++
> parser/tst/simple_tests/capability/bad_4.sd | 9 +++++++++
> parser/tst/simple_tests/capability/ok3.sd | 9 +++++++++
> 4 files changed, 34 insertions(+), 11 deletions(-)
> create mode 100644 parser/tst/simple_tests/capability/bad_3.sd
> create mode 100644 parser/tst/simple_tests/capability/bad_4.sd
> create mode 100644 parser/tst/simple_tests/capability/ok3.sd
>
> diff --git a/parser/parser_yacc.y b/parser/parser_yacc.y
> index 2a4fa5d..fff7e23 100644
> --- a/parser/parser_yacc.y
> +++ b/parser/parser_yacc.y
> @@ -1057,10 +1057,15 @@ set_caps: TOK_SET TOK_CAPABILITY caps TOK_END_OF_RULE
>
> capability: TOK_CAPABILITY caps TOK_END_OF_RULE
> {
> - $$ = $2;
> + if ($2 == 0) {
> + /* bare capability keyword - set all caps */
> + $$ = 0xffffffffffffffff;
Should this be something more dynamic, using _LINUX_CAPABILITY_U32S_3 or
something similar to detect size, or is it sufficient to assume unsigned
long now?
If it's safe, then:
Acked-by: Kees Cook <kees at ubuntu.com>
:)
> + } else
> + $$ = $2;
> };
>
> -caps: caps TOK_ID
> +caps: { /* nothing */ $$ = 0; }
> + | caps TOK_ID
> {
> int cap = name_to_capability($2);
> if (cap == -1)
> @@ -1069,15 +1074,6 @@ caps: caps TOK_ID
> $$ = $1 | CAP_TO_MASK(cap);
> }
>
> -caps: TOK_ID
> - {
> - int cap = name_to_capability($1);
> - if (cap == -1)
> - yyerror(_("Invalid capability %s."), $1);
> - free($1);
> - $$ = CAP_TO_MASK(cap);
> - };
> -
> %%
> #define MAXBUFSIZE 4096
>
> diff --git a/parser/tst/simple_tests/capability/bad_3.sd b/parser/tst/simple_tests/capability/bad_3.sd
> new file mode 100644
> index 0000000..00e4f4b
> --- /dev/null
> +++ b/parser/tst/simple_tests/capability/bad_3.sd
> @@ -0,0 +1,9 @@
> +#
> +#=DESCRIPTION fail CAP_XXX syntax.
> +#=EXRESULT FAIL
> +# vim:syntax=subdomain
> +# Last Modified: Sun Apr 17 19:44:44 2005
> +#
> +/does/not/exist {
> + capability chown CAP_CHOWN,
> +}
> diff --git a/parser/tst/simple_tests/capability/bad_4.sd b/parser/tst/simple_tests/capability/bad_4.sd
> new file mode 100644
> index 0000000..502c74a
> --- /dev/null
> +++ b/parser/tst/simple_tests/capability/bad_4.sd
> @@ -0,0 +1,9 @@
> +#
> +#=DESCRIPTION fail unknown keyword
> +#=EXRESULT FAIL
> +# vim:syntax=subdomain
> +# Last Modified: Sun Apr 17 19:44:44 2005
> +#
> +/does/not/exist {
> + capability chown foobar,
> +}
> diff --git a/parser/tst/simple_tests/capability/ok3.sd b/parser/tst/simple_tests/capability/ok3.sd
> new file mode 100644
> index 0000000..454b96c
> --- /dev/null
> +++ b/parser/tst/simple_tests/capability/ok3.sd
> @@ -0,0 +1,9 @@
> +#
> +#=DESCRIPTION validate some uses of capabilties.
> +#=EXRESULT PASS
> +# vim:syntax=subdomain
> +# Last Modified: Sun Apr 17 19:44:44 2005
> +#
> +/does/not/exist {
> + capability,
> +}
> --
> 1.7.9
>
>
> --
> AppArmor mailing list
> AppArmor at lists.ubuntu.com
> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor
--
Kees Cook
More information about the AppArmor
mailing list