aboutgitcodelistschat:MatrixIRC
path: root/tests/unit/test_filter.c
diff options
context:
space:
mode:
authorAlice Frosi <afrosi@redhat.com>2023-05-19 16:53:53 +0200
committerAlice Frosi <afrosi@redhat.com>2023-05-19 17:59:10 +0200
commitea0bdcf104654ec45d4a32055a4fb2573613ea16 (patch)
tree9f8266b06808957fd10aad610bdd43a649f26c4f /tests/unit/test_filter.c
parent1f487f5a95f3fc9e9e9f4681436bfc8011d738aa (diff)
downloadseitan-ea0bdcf104654ec45d4a32055a4fb2573613ea16.tar
seitan-ea0bdcf104654ec45d4a32055a4fb2573613ea16.tar.gz
seitan-ea0bdcf104654ec45d4a32055a4fb2573613ea16.tar.bz2
seitan-ea0bdcf104654ec45d4a32055a4fb2573613ea16.tar.lz
seitan-ea0bdcf104654ec45d4a32055a4fb2573613ea16.tar.xz
seitan-ea0bdcf104654ec45d4a32055a4fb2573613ea16.tar.zst
seitan-ea0bdcf104654ec45d4a32055a4fb2573613ea16.zip
filter: adjust filter build
Add filter_flush_args() to flush the arguments when finish to add the syscall arguments. Fixed test compilation after refactoring.
Diffstat (limited to 'tests/unit/test_filter.c')
-rw-r--r--tests/unit/test_filter.c24
1 files changed, 6 insertions, 18 deletions
diff --git a/tests/unit/test_filter.c b/tests/unit/test_filter.c
index d45e57b..24a18be 100644
--- a/tests/unit/test_filter.c
+++ b/tests/unit/test_filter.c
@@ -23,35 +23,23 @@
char tfilter[] = "/tmp/test-filter.bpf";
-static int read_filter(struct sock_filter filter[])
-{
- int fd, n;
-
- fd = open(tfilter, O_CLOEXEC | O_RDONLY);
- ck_assert_int_ge(fd, 0);
-
- n = read(fd, filter, sizeof(struct sock_filter) * SIZE_FILTER);
- ck_assert_int_ge(n, 0);
- close(fd);
-
- return n / sizeof(struct sock_filter);
-}
-
static int generate_install_filter(struct args_target *at)
{
struct sock_filter filter[SIZE_FILTER];
unsigned int size;
- bool append = false;
+ bool has_arg = false;
filter_notify(at->nr);
for (unsigned int i = 0; i < 6; i++) {
if (at->filter_args[i]) {
- filter_add_arg(i, at->args[i], append);
- append = true;
+ filter_add_arg(i, at->args[i]);
+ has_arg = true;
}
}
+ if(has_arg)
+ filter_flush_args();
filter_write(tfilter);
- size = read_filter(filter);
+ size = read_filter(filter, tfilter);
fprintf(stderr, "size %d\n", size);
bpf_disasm_all(filter, size);
return install_filter(filter, size);