diff options
author | Dmitry V. Levin <ldv@strace.io> | 2022-11-05 08:00:00 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@strace.io> | 2022-11-05 08:00:00 +0000 |
commit | 8c3af47e434da77640d61a6bed14b5e388860e79 (patch) | |
tree | 428a3621e6ce4ed83ce8981738771a93f821a262 | |
parent | 9c473b7048a0c1aa094ed31af3da9181090d6a72 (diff) | |
download | strace-8c3af47e434da77640d61a6bed14b5e388860e79.tar.gz |
tests: check decoding of ioctl TIOC[GS]WINSZ commands
* tests/ioctl_winsize.c: New file.
* tests/gen_tests.in (ioctl_winsize): New test.
* tests/pure_executables.list: Add ioctl_winsize.
* tests/.gitignore: Likewise.
-rw-r--r-- | tests/.gitignore | 1 | ||||
-rw-r--r-- | tests/gen_tests.in | 1 | ||||
-rw-r--r-- | tests/ioctl_winsize.c | 43 | ||||
-rwxr-xr-x | tests/pure_executables.list | 1 |
4 files changed, 46 insertions, 0 deletions
diff --git a/tests/.gitignore b/tests/.gitignore index a8d2ffa94..581ab324d 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -398,6 +398,7 @@ ioctl_v4l2-v-Xabbrev ioctl_v4l2-v-Xraw ioctl_v4l2-v-Xverbose ioctl_watchdog +ioctl_winsize ioperm iopl ioprio diff --git a/tests/gen_tests.in b/tests/gen_tests.in index 5c059e0ac..b822add55 100644 --- a/tests/gen_tests.in +++ b/tests/gen_tests.in @@ -416,6 +416,7 @@ ioctl_v4l2-v-Xabbrev +ioctl.test -v -Xabbrev ioctl_v4l2-v-Xraw +ioctl.test -v -Xraw ioctl_v4l2-v-Xverbose +ioctl.test -v -Xverbose ioctl_watchdog +ioctl.test +ioctl_winsize +ioctl.test ioperm -a27 iopl -a8 ioprio -a18 -e trace=ioprio_get,ioprio_set diff --git a/tests/ioctl_winsize.c b/tests/ioctl_winsize.c new file mode 100644 index 000000000..fdf29a68b --- /dev/null +++ b/tests/ioctl_winsize.c @@ -0,0 +1,43 @@ +/* + * Check decoding of ioctl TIOC[GS]WINSZ commands. + * + * Copyright (c) 2022 Dmitry V. Levin <ldv@strace.io> + * All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "tests.h" +#include <stdio.h> +#include <sys/ioctl.h> + +int +main(void) +{ + int rc; + + rc = ioctl(-1, TIOCGWINSZ, 0); + printf("ioctl(-1, TIOCGWINSZ, NULL) = %s\n", sprintrc(rc)); + + rc = ioctl(-1, TIOCSWINSZ, 0); + printf("ioctl(-1, TIOCSWINSZ, NULL) = %s\n", sprintrc(rc)); + + TAIL_ALLOC_OBJECT_CONST_PTR(struct winsize, ws); + const void *const efault = ws + 1; + fill_memory(ws, sizeof(*ws)); + + rc = ioctl(-1, TIOCSWINSZ, efault); + printf("ioctl(-1, TIOCSWINSZ, %p) = %s\n", efault, sprintrc(rc)); + + rc = ioctl(-1, TIOCGWINSZ, ws); + printf("ioctl(-1, TIOCGWINSZ, %p) = %s\n", ws, sprintrc(rc)); + + rc = ioctl(-1, TIOCSWINSZ, ws); + printf("ioctl(-1, TIOCSWINSZ, {ws_row=%u, ws_col=%u" + ", ws_xpixel=%u, ws_ypixel=%u}) = %s\n", + ws->ws_row, ws->ws_col, ws->ws_xpixel, ws->ws_ypixel, + sprintrc(rc)); + + puts("+++ exited with 0 +++"); + return 0; +} diff --git a/tests/pure_executables.list b/tests/pure_executables.list index 451c476f0..3c1317adb 100755 --- a/tests/pure_executables.list +++ b/tests/pure_executables.list @@ -252,6 +252,7 @@ ioctl_v4l2-v-Xabbrev ioctl_v4l2-v-Xraw ioctl_v4l2-v-Xverbose ioctl_watchdog +ioctl_winsize ioperm iopl ioprio |