On Tue, Feb 14, 2012 at 09:32:27AM -0800, John Johansen wrote:
> mode strings overlap with other potential commands, or strings, and as
> currently written can be match as a leading substring of an ID.  Eliminate
> the leading substring case by requiring that for a mode string to be
> recognized it must be terminated by whitespace, eol, eof, or
> comma (end of rule).
> 
> The other cases where modes string overlap are ambiguous and the ID should
> be quoted to remove the ambiguity.
> 
> Signed-off-by: John Johansen <john.johan...@canonical.com>
> ---
>  parser/parser_lex.l |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/parser/parser_lex.l b/parser/parser_lex.l
> index 8f549c8..e4f8f66 100644
> --- a/parser/parser_lex.l
> +++ b/parser/parser_lex.l
> @@ -175,9 +175,9 @@ SLASH             \/
>  COLON                :
>  END_OF_RULE  [,]
>  RANGE                -
> -MODE_CHARS   ([RrWwaLlMmkXx])|(([Pp]|[Cc])[Xx])|(([Pp]|[Cc])?([IiUu])[Xx])
> -MODES                {MODE_CHARS}+
>  WS           [[:blank:]]
> +MODE_CHARS   ([RrWwaLlMmkXx])|(([Pp]|[Cc])[Xx])|(([Pp]|[Cc])?([IiUu])[Xx])
> +MODES                ({MODE_CHARS}+)
>  NUMBER               [[:digit:]]+

Why the relocation churn here? Better to just change only the MODES
definition for better change readability.

>  ID_CHARS     [^ \t\n"!,]
> @@ -540,7 +540,7 @@ LT_EQUAL  <=
>                       return TOK_ID;
>                       }
>  
> -{MODES}                      {
> +({MODES})/([[:space:],])     {
>                       DUMP_PREPROCESS;
>                       yylval.mode = strdup(yytext);
>                       PDEBUG("Found modes: %s\n", yylval.mode);

Otherwise, looks fine.

-Kees

-- 
Kees Cook

-- 
AppArmor mailing list
AppArmor@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/apparmor

Reply via email to