<<
path:
root/public/blog.git/html/src/search/sec_seccomp.jai
blob: c53f27b6614f5213e04c24e6aeefb506124838d3
[raw]
[clear marker]
3sec_seccomp_init :: () {
5 log_error("SECCOMP IS DISABLED!");
6 if !is_dev_machine() then exit(99);
10 new_context := context;
11 new_context.logger = my_logger;
13 push_context,defer_pop new_context;
16 SECCOMP_TEMPLATE :: "had_error |= seccomp_rule_add(ctx, .ALLOW, .%);";
19 ctx := seccomp_init(.KILL_PROCESS);
21 ctx := seccomp_init(.LOG);
23 defer seccomp_release(ctx);
24 if !ctx { log_error("Init failed"); exit(1); }
30 for SECCOMP_ALLOWED_SYSCALLS {
31 template := tprint(SECCOMP_TEMPLATE, it);
32 append(*buf, template);
34 s := builder_to_string(*buf);
38 had_error |= seccomp_rule_add(ctx, .ALLOW, .EXIT);
39 had_error |= seccomp_rule_add(ctx, .ALLOW, .EXIT_GROUP);
42 log_error("Could not add rules.");
46 if seccomp_load(ctx) < 0 {
47 log_error("Could not load context into kernel");
51 #if SECCOMP_ARMED then log("is armed."); else log("is in log mode! NOT ARMED!");
58/** Copy pasta from dev/syscalls.py */
59SECCOMP_ALLOWED_SYSCALLS :: string.[
81my_logger :: #bake_arguments base_logger(prefix="Seccomp");