commit:     de6efe6b3e28eea299401244e7b506a6f9c22d51
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 23 19:13:51 2020 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Wed Dec 23 19:13:51 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=de6efe6b

sys-apps/man-db: allow clock_gettime64 syscall

Closes: https://bugs.gentoo.org/744712
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 .../files/man-db-2.9.3-clock_gettime64.patch       | 44 ++++++++++++++++++++++
 .../{man-db-9999.ebuild => man-db-2.9.3-r1.ebuild} |  5 ++-
 sys-apps/man-db/man-db-9999.ebuild                 |  4 +-
 3 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/sys-apps/man-db/files/man-db-2.9.3-clock_gettime64.patch 
b/sys-apps/man-db/files/man-db-2.9.3-clock_gettime64.patch
new file mode 100644
index 00000000000..0da1b2c5b2b
--- /dev/null
+++ b/sys-apps/man-db/files/man-db-2.9.3-clock_gettime64.patch
@@ -0,0 +1,44 @@
+From 7315a9475d8fa37af49e9e7ed11e1534f23ef70b Mon Sep 17 00:00:00 2001
+From: "S. Gilles" <sgil...@umd.edu>
+Date: Wed, 12 Aug 2020 16:40:07 -0400
+Subject: Allow clock_gettime64; return ENOSYS so libcs can engage fallbacks
+
+libcs such as musl expect ENOSYS to be returned (not EPERM) in their
+fallback code, so change the seccomp filter to be more agreeable to
+them.
+
+At the same time, clock_gettime is permitted in the filter, so permit
+clock_gettime64 as well -- it will be needed by 2038 in any case.
+
+* lib/sandbox.c (make_seccomp_filter): Set default action to
+SCMP_ACT_ERRNO (ENOSYS).  Allow clock_gettime64.
+* NEWS: Document this.
+---
+ NEWS          | 9 +++++++++
+ lib/sandbox.c | 3 ++-
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/lib/sandbox.c b/lib/sandbox.c
+index 21ec28aa..d934a0f9 100644
+--- a/lib/sandbox.c
++++ b/lib/sandbox.c
+@@ -232,7 +232,7 @@ static scmp_filter_ctx make_seccomp_filter (int permissive)
+               ;
+ 
+       debug ("initialising seccomp filter (permissive: %d)\n", permissive);
+-      ctx = seccomp_init (SCMP_ACT_ERRNO (EPERM));
++      ctx = seccomp_init (SCMP_ACT_ERRNO (ENOSYS));
+       if (!ctx)
+               error (FATAL, errno, "can't initialise seccomp filter");
+ 
+@@ -271,6 +271,7 @@ static scmp_filter_ctx make_seccomp_filter (int permissive)
+       /* systemd: SystemCallFilter=@default */
+       SC_ALLOW ("clock_getres");
+       SC_ALLOW ("clock_gettime");
++      SC_ALLOW ("clock_gettime64");
+       SC_ALLOW ("clock_nanosleep");
+       SC_ALLOW ("execve");
+       SC_ALLOW ("exit");
+-- 
+cgit v1.2.1
+

diff --git a/sys-apps/man-db/man-db-9999.ebuild 
b/sys-apps/man-db/man-db-2.9.3-r1.ebuild
similarity index 97%
copy from sys-apps/man-db/man-db-9999.ebuild
copy to sys-apps/man-db/man-db-2.9.3-r1.ebuild
index 25d02ea5f57..35e2bb5d6ce 100644
--- a/sys-apps/man-db/man-db-9999.ebuild
+++ b/sys-apps/man-db/man-db-2.9.3-r1.ebuild
@@ -46,7 +46,10 @@ RDEPEND="
 "
 PDEPEND="manpager? ( app-text/manpager )"
 
-PATCHES=( "${FILESDIR}"/${PN}-2.9.3-sandbox-env-tests.patch )
+PATCHES=(
+       "${FILESDIR}"/${PN}-2.9.3-sandbox-env-tests.patch
+       "${FILESDIR}"/man-db-2.9.3-clock_gettime64.patch
+)
 
 pkg_setup() {
        if (use gdbm && use berkdb) || (use !gdbm && use !berkdb) ; then #496150

diff --git a/sys-apps/man-db/man-db-9999.ebuild 
b/sys-apps/man-db/man-db-9999.ebuild
index 25d02ea5f57..cf3711365b0 100644
--- a/sys-apps/man-db/man-db-9999.ebuild
+++ b/sys-apps/man-db/man-db-9999.ebuild
@@ -46,7 +46,9 @@ RDEPEND="
 "
 PDEPEND="manpager? ( app-text/manpager )"
 
-PATCHES=( "${FILESDIR}"/${PN}-2.9.3-sandbox-env-tests.patch )
+PATCHES=(
+       "${FILESDIR}"/man-db-2.9.3-sandbox-env-tests.patch
+)
 
 pkg_setup() {
        if (use gdbm && use berkdb) || (use !gdbm && use !berkdb) ; then #496150

Reply via email to