Index: experimental/webtry/seccomp_bpf.h |
diff --git a/experimental/webtry/seccomp_bpf.h b/experimental/webtry/seccomp_bpf.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8bbe99b7f8835f35903dfe4e50b873f3a458ad10 |
--- /dev/null |
+++ b/experimental/webtry/seccomp_bpf.h |
@@ -0,0 +1,45 @@ |
+/* |
+ * seccomp example for x86 (32-bit and 64-bit) with BPF macros |
+ * |
+ * Copyright (c) 2012 The Chromium OS Authors <chromium-os-dev@chromium.org> |
+ * Authors: |
+ * Will Drewry <wad@chromium.org> |
+ * Kees Cook <keescook@chromium.org> |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ * |
+ * A stripped down version of the file found in this tutorial: http://outflux.net/teach-seccomp/. |
+ */ |
+#ifndef _SECCOMP_BPF_H_ |
+#define _SECCOMP_BPF_H_ |
+ |
+#define _GNU_SOURCE 1 |
+#include <stdio.h> |
+#include <stddef.h> |
+#include <stdlib.h> |
+#include <errno.h> |
+#include <signal.h> |
+#include <string.h> |
+#include <unistd.h> |
+ |
+#include <sys/prctl.h> |
+ |
+#include <linux/unistd.h> |
+#include <linux/audit.h> |
+#include <linux/filter.h> |
+#include <linux/seccomp.h> |
+ |
+#define syscall_nr (offsetof(struct seccomp_data, nr)) |
+ |
+#define EXAMINE_SYSCALL \ |
+ BPF_STMT(BPF_LD+BPF_W+BPF_ABS, syscall_nr) |
+ |
+#define ALLOW_SYSCALL(name) \ |
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, __NR_##name, 0, 1), \ |
+ BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW) |
+ |
+#define KILL_PROCESS \ |
+ BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL) |
+ |
+#endif /* _SECCOMP_BPF_H_ */ |