diff --git a/tests/main/snap-seccomp-blocks-tty-injection/task.yaml b/tests/main/snap-seccomp-blocks-tty-injection/task.yaml index 2bdbfe020df..e839945cc38 100644 --- a/tests/main/snap-seccomp-blocks-tty-injection/task.yaml +++ b/tests/main/snap-seccomp-blocks-tty-injection/task.yaml @@ -24,6 +24,6 @@ execute: | apparmor_parser -r /var/lib/snapd/apparmor/profiles/snap.test-snapd-sh.sh fi - snap run test-snapd-sh.sh -c "\$SNAP_COMMON/test-tiocsti" < /dev/tty1 2>&1 | MATCH 'normal TIOCSTI: -1 \(Operation not permitted\)' - snap run test-snapd-sh.sh -c "\$SNAP_COMMON/test-tiocsti" < /dev/tty1 2>&1 | MATCH 'high-bit-set TIOCSTI: -1 \(Operation not permitted\)' + snap run test-snapd-sh.sh -c "\$SNAP_COMMON/test-tiocsti" < /dev/tty1 2>&1 | MATCH 'normal TIOCSTI: -1 \((Operation not permitted|Permission denied)\)' + snap run test-snapd-sh.sh -c "\$SNAP_COMMON/test-tiocsti" < /dev/tty1 2>&1 | MATCH 'high-bit-set TIOCSTI: -1 \((Operation not permitted|Permission denied)\)' snap run test-snapd-sh.sh -c "\$SNAP_COMMON/test-tioclinux" < /dev/tty1 2>&1 | MATCH 'ioctl\(0, TIOCLINUX, ...\) failed: Permission denied' diff --git a/tests/main/snap-seccomp-blocks-tty-injection/test-tiocsti.c b/tests/main/snap-seccomp-blocks-tty-injection/test-tiocsti.c index 8dd54958a23..b9b2ee56e3b 100644 --- a/tests/main/snap-seccomp-blocks-tty-injection/test-tiocsti.c +++ b/tests/main/snap-seccomp-blocks-tty-injection/test-tiocsti.c @@ -14,9 +14,17 @@ static int ioctl64(int fd, unsigned long nr, void *arg) { int main(void) { int res; char pushmeback = '#'; - res = ioctl64(0, TIOCSTI, &pushmeback); + + unsigned long syscallnr = TIOCSTI; + res = ioctl64(0, syscallnr, &pushmeback); printf("normal TIOCSTI: %d (%m)\n", res); - res = ioctl64(0, TIOCSTI | (1UL<<32), &pushmeback); + +#ifdef __LP64__ + // this high bit check only works on 64bit systems, on 32bit it will fail: + // "error: left shift count >= width of type [-Werror=shift-count-overflow]" + syscallnr = TIOCSTI | (1UL<<32); +#endif + res = ioctl64(0, syscallnr, &pushmeback); printf("high-bit-set TIOCSTI: %d (%m)\n", res); return res; }