libseccomp/backport-bpf-pfc-Add-handling-for-0-syscalls-in-the-binary-tr.patch

50 lines
1.3 KiB
Diff
Raw Normal View History

2022-08-27 15:23:19 +08:00
From 2de3b87122c18b58b3e2b32ab2e81ac43774a7aa Mon Sep 17 00:00:00 2001
From: Tom Hromatka <tom.hromatka@oracle.com>
Date: Wed, 16 Mar 2022 11:19:14 -0600
Subject: [PATCH] bpf: pfc: Add handling for 0 syscalls in the binary tree
Handle the unlikely case where a user has chosen the
binary tree optimization but has zero syscalls in their
filter.
Fixes: https://github.com/seccomp/libseccomp/issues/370
Fixes: a3732b32b8e67 ("bpf:pfc: Add optimization option to use a binary tree")
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Acked-by: Paul Moore <paul@paul-moore.com>
---
src/gen_bpf.c | 3 +++
src/gen_pfc.c | 3 +++
2 files changed, 6 insertions(+)
diff --git a/src/gen_bpf.c b/src/gen_bpf.c
index c878f44..7131761 100644
--- a/src/gen_bpf.c
+++ b/src/gen_bpf.c
@@ -1348,6 +1348,9 @@ static int _get_bintree_levels(unsigned int syscall_cnt)
{
unsigned int i = 2, max_level = SYSCALLS_PER_NODE * 2;
+ if (syscall_cnt == 0)
+ return 0;
+
while (max_level < syscall_cnt) {
max_level <<= 1;
i++;
diff --git a/src/gen_pfc.c b/src/gen_pfc.c
index c7fb536..4916055 100644
--- a/src/gen_pfc.c
+++ b/src/gen_pfc.c
@@ -275,6 +275,9 @@ static int _get_bintree_levels(unsigned int syscall_cnt,
/* Only use a binary tree if requested */
return 0;
+ if (syscall_cnt == 0)
+ return 0;
+
do {
max_level = SYSCALLS_PER_NODE << i;
i++;
--
2.27.0