[apparmor] [PATCH v2] Fix mount rule preprocessor output

Tyler Hicks tyhicks at canonical.com
Mon Jun 24 18:47:50 UTC 2013


Currently, mount rule preprocessor output is incorrect:

$ echo '/t { mount options=ro /s -> /d, }' | apparmor_parser -p
/t { mountmount =ro /s -> /d, }
$ echo '/t { mount options in (ro) /s -> /d, }' | apparmor_parser -p
/t { mountmount  in (ro) /s -> /d, }

This is due to incorrect placement of DUMP_PREPROCESS in parser_lex.l.
With this patch, the output is correct:

$ echo '/t { mount options=ro /s -> /d, }' | apparmor_parser -p
/t { mount options=ro /s -> /d, }
$ echo '/t { mount options in (ro) /s -> /d, }' | apparmor_parser -p
/t { mount options in (ro) /s -> /d,

Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
---

* Changes since v2:
  - Add DUMP_PREPROCESS to second MOUNT_MODE branch
  - Simplify examples in commit message to avoid line wrapping
  - Add examples to the commit message showing the usage of the second
    MOUNT_MODE branch

 parser/parser_lex.l | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/parser/parser_lex.l b/parser/parser_lex.l
index 1258b01..539e16a 100644
--- a/parser/parser_lex.l
+++ b/parser/parser_lex.l
@@ -286,6 +286,7 @@ LT_EQUAL	<=
 				 * as bison may have requested the next
 				 * token from the scanner
 				 */
+				DUMP_PREPROCESS;
 				PDEBUG("conditional %s=\n", yytext);
 				yylval.id = processid(yytext, yyleng);
 				yy_push_state(EXTCOND_MODE);
@@ -298,6 +299,7 @@ LT_EQUAL	<=
 				 * as bison may have requested the next
 				 * token from the scanner
 				 */
+				DUMP_PREPROCESS;
 				PDEBUG("conditional %s=\n", yytext);
 				yylval.id = processid(yytext, yyleng);
 				yy_push_state(EXTCOND_MODE);
@@ -704,7 +706,6 @@ LT_EQUAL	<=
 			case TOK_MOUNT:
 			case TOK_REMOUNT:
 			case TOK_UMOUNT:
-				DUMP_PREPROCESS;
 				PDEBUG("Entering mount\n");
 				yy_push_state(MOUNT_MODE);
 				break;
-- 
1.8.1.2




More information about the AppArmor mailing list