]> xenbits.xensource.com Git - people/royger/freebsd.git/commitdiff
sem_clockwait_np test: fix usage of ATF API
authorEric van Gyzen <vangyzen@FreeBSD.org>
Fri, 1 Oct 2021 11:25:48 +0000 (06:25 -0500)
committerEric van Gyzen <vangyzen@FreeBSD.org>
Wed, 2 Mar 2022 21:56:30 +0000 (15:56 -0600)
ATF_REQUIRE_ERRNO requires the given errno iff the given expression is
true.  These test cases used it incorrectly, potentially allowing
sem_clockwait_np to succeed when it was expected to fail.  Use separate
ATF calls to require failure and the expected errno.

MFC after: 1 week
Sponsored by: Dell EMC Isilon

(cherry picked from commit 35e4527e88d3843cccf2f15a32b1fa041a01d693)

contrib/netbsd-tests/lib/librt/t_sem.c

index 3156b11e9bf399f89d0f22547534abc468beddc7..1c4290c0b3fb997704534a6607389a5918b29c16 100644 (file)
@@ -366,8 +366,9 @@ ATF_TC_BODY(clockwait_absolute_intr_remaining, tc)
        ATF_REQUIRE_MSG(clock_gettime(CLOCK_MONOTONIC, &ts) == 0,
            "%s", strerror(errno));
         timespec_add_ms(&ts, 100);
-       ATF_REQUIRE_ERRNO(EINTR, sem_clockwait_np(&sem, CLOCK_MONOTONIC,
+       ATF_REQUIRE_EQ(-1, sem_clockwait_np(&sem, CLOCK_MONOTONIC,
            TIMER_ABSTIME, &ts, &remain));
+       ATF_REQUIRE_ERRNO(EINTR, 1);
        ATF_REQUIRE_MSG(got_sigalrm, "did not get SIGALRM");
        ATF_REQUIRE_MSG(remain.tv_sec == 42 && remain.tv_nsec == 1000*1000*1000,
            "an absolute clockwait modified the remaining time on EINTR");
@@ -397,8 +398,9 @@ ATF_TC_BODY(clockwait_relative_intr_remaining, tc)
            "%s", strerror(errno));
        ts.tv_sec = 0;
        ts.tv_nsec = 100*1000*1000;
-       ATF_REQUIRE_ERRNO(EINTR, sem_clockwait_np(&sem, CLOCK_MONOTONIC, 0, &ts,
+       ATF_REQUIRE_EQ(-1, sem_clockwait_np(&sem, CLOCK_MONOTONIC, 0, &ts,
            &remain));
+       ATF_REQUIRE_ERRNO(EINTR, 1);
        ATF_REQUIRE_MSG(got_sigalrm, "did not get SIGALRM");
        ATF_REQUIRE_MSG(remain.tv_sec == 0 &&
            (remain.tv_nsec >= 25*1000*1000 || machine_is_virtual()) &&