summaryrefslogtreecommitdiff
path: root/tests/timerfd_xettime.c
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2017-04-23 23:10:57 +0000
committerDmitry V. Levin <ldv@altlinux.org>2017-04-24 23:14:57 +0000
commit8b86137d565cf2430bcdd61521ac7e153888a0c6 (patch)
tree666ea76b4138f770d85f2349bf842378a4af5ce2 /tests/timerfd_xettime.c
parent4b8def02befb04a6bedad0bf110adce46ee085c5 (diff)
downloadstrace-8b86137d565cf2430bcdd61521ac7e153888a0c6.tar.gz
tests: check decoding of invalid tv_sec and tv_nsec values
* tests/aio.c (main): Check decoding of invalid tv_sec and tv_nsec values. * tests/clock_nanosleep.c (main): Likewise. * tests/clock_xettime.c (main): Likewise. * tests/futex.c (main): Likewise. * tests/nanosleep.c (main): Likewise. * tests/ppoll.c (main): Likewise. * tests/pselect6.c (main): Likewise. * tests/recvmmsg-timeout.c (main): Likewise. * tests/rt_sigtimedwait.c (main): Likewise. * tests/semop.c (main): Likewise. * tests/timer_xettime.c (main): Likewise. * tests/timerfd_xettime.c (main): Likewise. * tests/utimensat.c (main): Likewise.
Diffstat (limited to 'tests/timerfd_xettime.c')
-rw-r--r--tests/timerfd_xettime.c70
1 files changed, 40 insertions, 30 deletions
diff --git a/tests/timerfd_xettime.c b/tests/timerfd_xettime.c
index c8a22cc41..7759185b2 100644
--- a/tests/timerfd_xettime.c
+++ b/tests/timerfd_xettime.c
@@ -47,24 +47,34 @@ main(void)
perror_msg_and_skip("timerfd_create");
puts("timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC|TFD_NONBLOCK) = 0");
- struct {
- struct itimerspec its;
- uint32_t pad[4];
- } old = {
- .its = {
- .it_interval = { 0xdeface5, 0xdeface6 },
- .it_value = { 0xdeface7, 0xdeface8 }
- },
- .pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
- }, new = {
- .its = {
- .it_interval = { 0xdeface1, 0xdeface2 },
- .it_value = { 0xdeface3, 0xdeface4 }
- },
- .pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
- };
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_new);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_old);
- if (syscall(__NR_timerfd_settime, 0, 0, &new.its, &old.its))
+ its_new->it_interval.tv_sec = 0xdeadbeefU;
+ its_new->it_interval.tv_nsec = 0xfacefeedU;
+ its_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ its_new->it_value.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+ long rc = syscall(__NR_timerfd_settime, 0, 0, its_new, its_old);
+ printf("timerfd_settime(0, 0"
+ ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+ ", it_value={tv_sec=%lld, tv_nsec=%llu}}, %p) = %s\n",
+ (long long) its_new->it_interval.tv_sec,
+ zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+ (long long) its_new->it_value.tv_sec,
+ zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+ its_old, sprintrc(rc));
+
+ its_new->it_interval.tv_sec = 0xdeface1;
+ its_new->it_interval.tv_nsec = 0xdeface2;
+ its_new->it_value.tv_sec = 0xdeface3;
+ its_new->it_value.tv_nsec = 0xdeface4;
+ its_old->it_interval.tv_sec = 0xdeface5;
+ its_old->it_interval.tv_nsec = 0xdeface6;
+ its_old->it_value.tv_sec = 0xdeface7;
+ its_old->it_value.tv_nsec = 0xdeface8;
+
+ if (syscall(__NR_timerfd_settime, 0, 0, its_new, its_old))
perror_msg_and_skip("timerfd_settime");
printf("timerfd_settime(0, 0"
", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
@@ -72,24 +82,24 @@ main(void)
", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
", it_value={tv_sec=%lld, tv_nsec=%llu}}"
") = 0\n",
- (long long) new.its.it_interval.tv_sec,
- zero_extend_signed_to_ull(new.its.it_interval.tv_nsec),
- (long long) new.its.it_value.tv_sec,
- zero_extend_signed_to_ull(new.its.it_value.tv_nsec),
- (long long) old.its.it_interval.tv_sec,
- zero_extend_signed_to_ull(old.its.it_interval.tv_nsec),
- (long long) old.its.it_value.tv_sec,
- zero_extend_signed_to_ull(old.its.it_value.tv_nsec));
+ (long long) its_new->it_interval.tv_sec,
+ zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+ (long long) its_new->it_value.tv_sec,
+ zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+ (long long) its_old->it_interval.tv_sec,
+ zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+ (long long) its_old->it_value.tv_sec,
+ zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
- if (syscall(__NR_timerfd_gettime, 0, &old.its))
+ if (syscall(__NR_timerfd_gettime, 0, its_old))
perror_msg_and_skip("timerfd_gettime");
printf("timerfd_gettime(0"
", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
", it_value={tv_sec=%lld, tv_nsec=%llu}}) = 0\n",
- (long long) old.its.it_interval.tv_sec,
- zero_extend_signed_to_ull(old.its.it_interval.tv_nsec),
- (long long) old.its.it_value.tv_sec,
- zero_extend_signed_to_ull(old.its.it_value.tv_nsec));
+ (long long) its_old->it_interval.tv_sec,
+ zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+ (long long) its_old->it_value.tv_sec,
+ zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
puts("+++ exited with 0 +++");
return 0;