SCMP_SYS(epoll_ctl),
SCMP_SYS(epoll_wait),
SCMP_SYS(fcntl),
-#ifdef __NR_fcntl64
- /* Older libseccomp versions don't define PNR entries for all of these,
- * so we need to ifdef them here.*/
- SCMP_SYS(fcntl64),
-#endif
+
SCMP_SYS(flock),
SCMP_SYS(fstat),
#ifdef __NR_fstat64
return 0;
}
+// TODO: param not working
+static int
+sb_setsockopt(scmp_filter_ctx ctx)
+{
+ int rc = 0;
+
+ rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(setsockopt), 2,
+ SCMP_CMP(1, SCMP_CMP_EQ, SOL_SOCKET),
+ SCMP_CMP(2, SCMP_CMP_EQ, SO_REUSEADDR));
+ if (rc)
+ return rc;
+
+ return 0;
+}
+
+#ifdef __NR_fcntl64
+static int
+sb_fcntl64(scmp_filter_ctx ctx)
+{
+ int rc = 0;
+
+ rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(fcntl64), 1,
+ SCMP_CMP(1, SCMP_CMP_EQ, F_GETFL));
+ if (rc)
+ return rc;
+
+ rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(fcntl64), 2,
+ SCMP_CMP(1, SCMP_CMP_EQ, F_SETFL),
+ SCMP_CMP(2, SCMP_CMP_EQ, O_RDWR|O_NONBLOCK));
+ if (rc)
+ return rc;
+
+ return 0;
+}
+#endif
+
static sandbox_filter_func_t filter_func[] = {
sb_rt_sigaction,
sb_execve,
sb_open,
sb_openat,
sb_clock_gettime,
+ sb_fcntl64
};
const char*