Loading...
--- Libc/Libc-1353.100.2/tests/clock.c
+++ Libc/Libc-1669.40.2/tests/clock.c
@@ -245,3 +245,25 @@
T_EXPECT_EQ(clock_settime(CLOCK_THREAD_CPUTIME_ID, &ts), -1, NULL);
T_EXPECT_EQ(errno, EINVAL, NULL);
}
+
+T_DECL(clock_settime_negative, "make sure clock_settime(CLOCK_REALTIME, tp) doesn't allow negative values in any fields",
+ T_META("as_root", "true"))
+{
+ struct timespec new, old;
+ T_ASSERT_POSIX_ZERO(clock_gettime(CLOCK_REALTIME, &old), NULL);
+
+ new.tv_sec = 1624297339;
+ new.tv_nsec = -28946484;
+ T_EXPECT_EQ(clock_settime(CLOCK_REALTIME, &new), -1, NULL);
+
+ new.tv_sec = -12;
+ new.tv_nsec = 28946484;
+ T_EXPECT_EQ(clock_settime(CLOCK_REALTIME, &new), -1, NULL);
+
+ new.tv_sec = -12;
+ new.tv_nsec = -28946484;
+ T_EXPECT_EQ(clock_settime(CLOCK_REALTIME, &new), -1, NULL);
+
+ // Put things roughly back where they were
+ T_ASSERT_POSIX_ZERO(clock_settime(CLOCK_REALTIME, &old), NULL);
+}