def test_parse_filter_statement(self):
     """Accept valid filter statements."""
     self.assertEqual(
         self.parser.parse_filter_statement(
             self._tokenize('read: 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, write}: arg0 == 0')),
         parser.ParsedFilterStatement((
             parser.Syscall('read', 0),
             parser.Syscall('write', 1),
         ), [
             parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()),
         ]))
     self.assertEqual(
         self.parser.parse_filter_statement(
             self._tokenize('io@libc: arg0 == 0')),
         parser.ParsedFilterStatement((
             parser.Syscall('read', 0),
             parser.Syscall('write', 1),
         ), [
             parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()),
         ]))
     self.assertEqual(
         self.parser.parse_filter_statement(
             self._tokenize('file-io@systemd: arg0 == 0')),
         parser.ParsedFilterStatement((
             parser.Syscall('read', 0),
             parser.Syscall('write', 1),
         ), [
             parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()),
         ]))
Example #2
0
 def test_parse_metadata(self):
     """Accept valid filter statements with metadata."""
     self.assertEqualIgnoringToken(
         self.parser.parse_filter_statement(
             self._tokenize('read[arch=test]: arg0 == 0')),
         parser.ParsedFilterStatement(
             syscalls=(
                 parser.Syscall('read', 0),
             ),
             filters=[
                 parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()),
             ],
             token=None))
     self.assertEqualIgnoringToken(
         self.parser.parse_filter_statement(
             self._tokenize(
                 '{read, nonexistent[arch=nonexistent]}: arg0 == 0')),
         parser.ParsedFilterStatement(
             syscalls=(
                 parser.Syscall('read', 0),
             ),
             filters=[
                 parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()),
             ],
             token=None))
Example #3
0
 def test_parse_filter_statement(self):
     """Accept valid filter statements."""
     self.assertEqualIgnoringToken(
         self.parser.parse_filter_statement(
             self._tokenize('read: arg0 == 0')),
         parser.ParsedFilterStatement(
             syscalls=(parser.Syscall('read', 0), ),
             filters=[
                 parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()),
             ],
             token=None))
     self.assertEqualIgnoringToken(
         self.parser.parse_filter_statement(
             self._tokenize('{read, write}: arg0 == 0')),
         parser.ParsedFilterStatement(syscalls=(
             parser.Syscall('read', 0),
             parser.Syscall('write', 1),
         ),
                                      filters=[
                                          parser.Filter(
                                              [[parser.Atom(0, '==', 0)]],
                                              bpf.Allow()),
                                      ],
                                      token=None))
     self.assertEqualIgnoringToken(
         self.parser.parse_filter_statement(
             self._tokenize('io@libc: arg0 == 0')),
         parser.ParsedFilterStatement(syscalls=(
             parser.Syscall('read', 0),
             parser.Syscall('write', 1),
         ),
                                      filters=[
                                          parser.Filter(
                                              [[parser.Atom(0, '==', 0)]],
                                              bpf.Allow()),
                                      ],
                                      token=None))
     self.assertEqualIgnoringToken(
         self.parser.parse_filter_statement(
             self._tokenize('file-io@systemd: arg0 == 0')),
         parser.ParsedFilterStatement(syscalls=(
             parser.Syscall('read', 0),
             parser.Syscall('write', 1),
         ),
                                      filters=[
                                          parser.Filter(
                                              [[parser.Atom(0, '==', 0)]],
                                              bpf.Allow()),
                                      ],
                                      token=None))
     self.assertEqualIgnoringToken(
         self.parser.parse_filter_statement(
             self._tokenize('kill: arg0 == 0')),
         parser.ParsedFilterStatement(
             syscalls=(parser.Syscall('kill', 62), ),
             filters=[
                 parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()),
             ],
             token=None))