diff --git a/changes/feature25313 b/changes/feature25313 new file mode 100644 index 000000000..90f421169 --- /dev/null +++ b/changes/feature25313 @@ -0,0 +1,4 @@ + o Minor features (sandbox): + - Explicitly permit the poll() system call when the Linux seccomp2-based + sandbox is enabled: apparently, some versions of libc use poll() when + calling getpwnam(). Closes ticket 25313. diff --git a/src/common/sandbox.c b/src/common/sandbox.c index 1b73f3126..4dd3e916d 100644 --- a/src/common/sandbox.c +++ b/src/common/sandbox.c @@ -253,7 +253,8 @@ static int filter_nopar_gen[] = { SCMP_SYS(recvmsg), SCMP_SYS(recvfrom), SCMP_SYS(sendto), - SCMP_SYS(unlink) + SCMP_SYS(unlink), + SCMP_SYS(poll) }; /* These macros help avoid the error where the number of filters we add on a @@ -1068,25 +1069,6 @@ sb_mremap(scmp_filter_ctx ctx, sandbox_cfg_t *filter) return 0; } -/** - * Function responsible for setting up the poll syscall for - * the seccomp filter sandbox. - */ -static int -sb_poll(scmp_filter_ctx ctx, sandbox_cfg_t *filter) -{ - int rc = 0; - (void) filter; - - rc = seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(poll), - SCMP_CMP(1, SCMP_CMP_EQ, 1), - SCMP_CMP(2, SCMP_CMP_EQ, 10)); - if (rc) - return rc; - - return 0; -} - #ifdef __NR_stat64 /** * Function responsible for setting up the stat64 syscall for @@ -1161,7 +1143,6 @@ static sandbox_filter_func_t filter_func[] = { sb_flock, sb_futex, sb_mremap, - sb_poll, #ifdef __NR_stat64 sb_stat64, #endif