diff options
author | Alice Frosi <afrosi@redhat.com> | 2023-05-19 16:53:53 +0200 |
---|---|---|
committer | Alice Frosi <afrosi@redhat.com> | 2023-05-19 17:59:10 +0200 |
commit | ea0bdcf104654ec45d4a32055a4fb2573613ea16 (patch) | |
tree | 9f8266b06808957fd10aad610bdd43a649f26c4f /tests/unit/test_filter.c | |
parent | 1f487f5a95f3fc9e9e9f4681436bfc8011d738aa (diff) | |
download | seitan-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.c | 24 |
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); |