This commit is contained in:
Cristian Toader 2013-07-30 23:52:54 +03:00
parent 686cf4c0ff
commit 5fc0e13db8

View File

@ -55,11 +55,7 @@ static int filter_nopar_gen[] = {
SCMP_SYS(epoll_ctl), SCMP_SYS(epoll_ctl),
SCMP_SYS(epoll_wait), SCMP_SYS(epoll_wait),
SCMP_SYS(fcntl), 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(flock),
SCMP_SYS(fstat), SCMP_SYS(fstat),
#ifdef __NR_fstat64 #ifdef __NR_fstat64
@ -294,6 +290,42 @@ sb_socket(scmp_filter_ctx ctx)
return 0; 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[] = { static sandbox_filter_func_t filter_func[] = {
sb_rt_sigaction, sb_rt_sigaction,
sb_execve, sb_execve,
@ -303,6 +335,7 @@ static sandbox_filter_func_t filter_func[] = {
sb_open, sb_open,
sb_openat, sb_openat,
sb_clock_gettime, sb_clock_gettime,
sb_fcntl64
}; };
const char* const char*