diff options
author | Julian Andres Klode <julian.klode@canonical.com> | 2020-08-05 16:28:50 +0200 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2020-08-11 12:12:48 +0000 |
commit | 9b649cacb6f64735e5a65b898cbbbfb0caad0745 (patch) | |
tree | 7e84c7c1141dd341d768adbfc627ef82100ebf24 | |
parent | df477a3d6c1b86f1913e6dbf3fcb587114d11606 (diff) | |
download | gnome-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.c | 7 |
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)}, |