On 02/14/2012 11:10 AM, Kees Cook wrote:
> Hi John,
> 
> On Tue, Feb 14, 2012 at 09:32:26AM -0800, John Johansen wrote:
>> Signed-off-by: John Johansen <[email protected]>
>> ---
>>  parser/parser_lex.l  |   31 +++++++++++++------------------
>>  parser/parser_yacc.y |    8 +++++++-
>>  2 files changed, 20 insertions(+), 19 deletions(-)
>>
>> diff --git a/parser/parser_lex.l b/parser/parser_lex.l
>> index bfcbd57..8f549c8 100644
>> --- a/parser/parser_lex.l
>> +++ b/parser/parser_lex.l
>> @@ -192,7 +192,6 @@ QUOTED_ID        \"{ALLOWED_QUOTED_ID}*\"
>>  
>>  IP          {NUMBER}\.{NUMBER}\.{NUMBER}\.{NUMBER}
>>  
>> -FLAGS          flags{WS}*=?{WS}*
>>  HAT         hat{WS}*
>>  PROFILE             profile{WS}*
>>  KEYWORD         [[:alpha:]_]+
>> @@ -254,6 +253,19 @@ LT_EQUAL        <=
>>      if ( !YY_CURRENT_BUFFER ) yyterminate();
>>  }
>>  
>> +{VARIABLE_NAME}/{WS}*={WS}* {
>> +                            /* we match to the = in the lexer so that
>> +                             * can switch scanner state.  By the time
>> +                             * the parser see the = it may be to late
>> +                             * as bison may have requested the next
>> +                             * token from the scanner
>> +                             */
>> +                            PDEBUG("conditional %s=\n", yytext);
>> +                            yylval.id = processid(yytext, yyleng);
>> +                            yy_push_state(EXTCOND_MODE);
>> +                            return TOK_CONDID;
>> +                    }
>> +
> 
> Why the relocation of this chunk? Seems better to keep it near the other
> VARIABLE_NAME use...
> 

Originally I did, but it got lifted and state shared as part of the mount
patch, and actually had other modifications done as well.  I pulled most
of those changes back into the original.

We could always rework it into a couple of patches but I guess I am just
getting lazy


>>  <SUB_NAME>{
>>      ({IDS}|{QUOTED_ID})     {
>>                        /* Ugh, this is a gross hack. I used to use
>> @@ -535,11 +547,6 @@ LT_EQUAL        <=
>>                      return TOK_MODE;
>>                      }
>>  
>> -{FLAGS}                     {
>> -                    DUMP_PREPROCESS;
>> -                    return TOK_FLAGS;
>> -                    }
>> -
>>  {HAT}                       {
>>                      DUMP_PREPROCESS;
>>                      yy_push_state(SUB_NAME);
>> @@ -565,18 +572,6 @@ LT_EQUAL        <=
>>                      return TOK_OPENPAREN;
>>                      }
>>  
>> -{VARIABLE_NAME}/{WS}*={WS}* {
>> -                            /* we match to the = in the lexer so that
>> -                             * can switch scanner state.  By the time
>> -                             * the parser see the = it may be to late
>> -                             * as bison may have requested the next
>> -                             * token from the scanner
>> -                             */
>> -                            yylval.id = processid(yytext, yyleng);
>> -                            yy_push_state(EXTCOND_MODE);
>> -                            return TOK_CONDID;
>> -                    }
>> -
>>  {VARIABLE_NAME}             {
>>                      DUMP_PREPROCESS;
>>                      int token = get_keyword_token(yytext);
>> diff --git a/parser/parser_yacc.y b/parser/parser_yacc.y
>> index 516cf57..af56a20 100644
>> --- a/parser/parser_yacc.y
>> +++ b/parser/parser_yacc.y
>> @@ -162,6 +162,7 @@ void add_local_entry(struct codomain *cod);
>>  }
>>  
>>  %type <id>  TOK_ID
>> +%type <id>  TOK_CONDID
>>  %type <mode>        TOK_MODE
>>  %type <fmode>   file_mode
>>  %type <cod> profile_base
>> @@ -398,7 +399,12 @@ flags:  { /* nothing */
>>      };
>>  
>>  opt_flags: { /* nothing */ $$ = 0; }
>> -    | TOK_FLAGS { $$ = 1; }
>> +    | TOK_CONDID TOK_EQUALS
>> +    {
>> +            if (strcmp($1, "flags") != 0)
>> +                    yyerror("expected flags= got %s=", $1);
>> +            $$ = 1;
>> +    }
>>  
>>  flags:      opt_flags TOK_OPENPAREN flagvals TOK_CLOSEPAREN
>>      {
>> -- 
>> 1.7.9
>>
>>
>> -- 
>> AppArmor mailing list
>> [email protected]
>> Modify settings or unsubscribe at: 
>> https://lists.ubuntu.com/mailman/listinfo/apparmor


-- 
AppArmor mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/apparmor

Reply via email to