summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Andres Klode <julian.klode@canonical.com>2020-08-05 16:28:50 +0200
committerBastien Nocera <hadess@hadess.net>2020-08-11 12:12:48 +0000
commit9b649cacb6f64735e5a65b898cbbbfb0caad0745 (patch)
tree7e84c7c1141dd341d768adbfc627ef82100ebf24
parentdf477a3d6c1b86f1913e6dbf3fcb587114d11606 (diff)
downloadgnome-desktop-9b649cacb6f64735e5a65b898cbbbfb0caad0745.tar.gz
Fix argument order of clone() for s390x in seccomp filter
From https://github.com/flatpak/flatpak/pull/3777 clone() is a mad syscall with about 4 different argument orders. While most of them agree that argument 0 is flags, s390 and s390x have the flags argument second - A0 is the child stack pointer there. [smcv: Add an explanatory comment; also test __CRIS__, for completeness; apply change from Flatpak to the copy of this code in gnome-desktop] Bug-Debian: https://bugs.debian.org/964541 Bug-Ubuntu: https://launchpad.net/bugs/1886814 Signed-off-by: Simon McVittie <smcv@collabora.com>
-rw-r--r--libgnome-desktop/gnome-desktop-thumbnail-script.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/libgnome-desktop/gnome-desktop-thumbnail-script.c b/libgnome-desktop/gnome-desktop-thumbnail-script.c
index 5a72e8b1..02776cd2 100644
--- a/libgnome-desktop/gnome-desktop-thumbnail-script.c
+++ b/libgnome-desktop/gnome-desktop-thumbnail-script.c
@@ -327,7 +327,14 @@ setup_seccomp (GPtrArray *argv_array,
{SCMP_SYS (unshare)},
{SCMP_SYS (mount)},
{SCMP_SYS (pivot_root)},
+#if defined(__s390__) || defined(__s390x__) || defined(__CRIS__)
+ /* Architectures with CONFIG_CLONE_BACKWARDS2: the child stack
+ * and flags arguments are reversed so the flags come second */
+ {SCMP_SYS (clone), &SCMP_A1 (SCMP_CMP_MASKED_EQ, CLONE_NEWUSER, CLONE_NEWUSER)},
+#else
+ /* Normally the flags come first */
{SCMP_SYS (clone), &SCMP_A0 (SCMP_CMP_MASKED_EQ, CLONE_NEWUSER, CLONE_NEWUSER)},
+#endif
/* Don't allow faking input to the controlling tty (CVE-2017-5226) */
{SCMP_SYS (ioctl), &SCMP_A1(SCMP_CMP_MASKED_EQ, 0xFFFFFFFFu, (int)TIOCSTI)},