summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@strace.io>2022-11-05 08:00:00 +0000
committerDmitry V. Levin <ldv@strace.io>2022-11-05 08:00:00 +0000
commit8c3af47e434da77640d61a6bed14b5e388860e79 (patch)
tree428a3621e6ce4ed83ce8981738771a93f821a262
parent9c473b7048a0c1aa094ed31af3da9181090d6a72 (diff)
downloadstrace-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/.gitignore1
-rw-r--r--tests/gen_tests.in1
-rw-r--r--tests/ioctl_winsize.c43
-rwxr-xr-xtests/pure_executables.list1
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