tools/compile_seccomp_policy: Support arch metadata attributes
This change adds support for parsing arch metadata attributes and filtering
statements that don't match the requested architecture.
Bug: chromium:856315
Test: ./tools/parser_unittest.py
Change-Id: I01c38079124b8806bb033460fe395075fbb734e9
diff --git a/tools/parser_unittest.py b/tools/parser_unittest.py
index ba0fedd..570f8a2 100755
--- a/tools/parser_unittest.py
+++ b/tools/parser_unittest.py
@@ -399,6 +399,22 @@
parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()),
]))
+ def test_parse_metadata(self):
+ """Accept valid filter statements with metadata."""
+ self.assertEqual(
+ self.parser.parse_filter_statement(
+ self._tokenize('read[arch=test]: arg0 == 0')),
+ parser.ParsedFilterStatement((parser.Syscall('read', 0), ), [
+ parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()),
+ ]))
+ self.assertEqual(
+ self.parser.parse_filter_statement(
+ self._tokenize(
+ '{read, nonexistent[arch=nonexistent]}: arg0 == 0')),
+ parser.ParsedFilterStatement((parser.Syscall('read', 0), ), [
+ parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()),
+ ]))
+
def test_parse_unclosed_brace(self):
"""Reject unclosed brace."""
with self.assertRaisesRegex(parser.ParseException, 'unclosed brace'):