From 9f2a38cf40f2632472b3889505fd1ab5d6ba9e1b Mon Sep 17 00:00:00 2001 From: Siva Mahadevan Date: Wed, 10 Jun 2026 18:27:42 -0400 Subject: [PATCH] libc/fortify_uio_test: replace stdin in base readv tests This fixes the readv_before_end and preadv_before_end test timeout failures on riscv. See https://ci.freebsd.org/job/FreeBSD-main-riscv64-test/lastCompletedBuild/testReport/lib.libc.secure/fortify_uio_test/readv_before_end/ Reviewed by: kevans, emaste MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D57420 --- lib/libc/tests/secure/fortify_uio_test.c | 18 ++++++++++++++++++ .../tests/secure/generate-fortify-tests.lua | 2 ++ 2 files changed, 20 insertions(+) diff --git a/lib/libc/tests/secure/fortify_uio_test.c b/lib/libc/tests/secure/fortify_uio_test.c index 46b46ed2f7d..b1b51eff824 100644 --- a/lib/libc/tests/secure/fortify_uio_test.c +++ b/lib/libc/tests/secure/fortify_uio_test.c @@ -179,6 +179,8 @@ ATF_TC_BODY(readv_before_end, tc) const size_t __len = 2 - 1; const size_t __idx __unused = __len - 1; + replace_stdin(); + readv(STDIN_FILENO, __stack.__buf, __len); #undef BUF @@ -200,6 +202,8 @@ ATF_TC_BODY(readv_end, tc) const size_t __len = 2; const size_t __idx __unused = __len - 1; + replace_stdin(); + readv(STDIN_FILENO, __stack.__buf, __len); #undef BUF @@ -230,6 +234,8 @@ ATF_TC_BODY(readv_after_end, tc) /* Child */ disable_coredumps(); + replace_stdin(); + readv(STDIN_FILENO, __stack.__buf, __len); _exit(EX_SOFTWARE); /* Should have aborted. */ @@ -274,6 +280,7 @@ ATF_TC_BODY(readv_heap_before_end, tc) const size_t __idx __unused = __len - 1; __stack.__buf = malloc(__bufsz); + replace_stdin(); readv(STDIN_FILENO, __stack.__buf, __len); #undef BUF @@ -297,6 +304,7 @@ ATF_TC_BODY(readv_heap_end, tc) const size_t __idx __unused = __len - 1; __stack.__buf = malloc(__bufsz); + replace_stdin(); readv(STDIN_FILENO, __stack.__buf, __len); #undef BUF @@ -329,6 +337,7 @@ ATF_TC_BODY(readv_heap_after_end, tc) /* Child */ disable_coredumps(); __stack.__buf = malloc(__bufsz); + replace_stdin(); readv(STDIN_FILENO, __stack.__buf, __len); _exit(EX_SOFTWARE); /* Should have aborted. */ @@ -542,6 +551,8 @@ ATF_TC_BODY(preadv_before_end, tc) const size_t __len = 2 - 1; const size_t __idx __unused = __len - 1; + replace_stdin(); + preadv(STDIN_FILENO, __stack.__buf, __len, 0); #undef BUF @@ -563,6 +574,8 @@ ATF_TC_BODY(preadv_end, tc) const size_t __len = 2; const size_t __idx __unused = __len - 1; + replace_stdin(); + preadv(STDIN_FILENO, __stack.__buf, __len, 0); #undef BUF @@ -593,6 +606,8 @@ ATF_TC_BODY(preadv_after_end, tc) /* Child */ disable_coredumps(); + replace_stdin(); + preadv(STDIN_FILENO, __stack.__buf, __len, 0); _exit(EX_SOFTWARE); /* Should have aborted. */ @@ -637,6 +652,7 @@ ATF_TC_BODY(preadv_heap_before_end, tc) const size_t __idx __unused = __len - 1; __stack.__buf = malloc(__bufsz); + replace_stdin(); preadv(STDIN_FILENO, __stack.__buf, __len, 0); #undef BUF @@ -660,6 +676,7 @@ ATF_TC_BODY(preadv_heap_end, tc) const size_t __idx __unused = __len - 1; __stack.__buf = malloc(__bufsz); + replace_stdin(); preadv(STDIN_FILENO, __stack.__buf, __len, 0); #undef BUF @@ -692,6 +709,7 @@ ATF_TC_BODY(preadv_heap_after_end, tc) /* Child */ disable_coredumps(); __stack.__buf = malloc(__bufsz); + replace_stdin(); preadv(STDIN_FILENO, __stack.__buf, __len, 0); _exit(EX_SOFTWARE); /* Should have aborted. */ diff --git a/lib/libc/tests/secure/generate-fortify-tests.lua b/lib/libc/tests/secure/generate-fortify-tests.lua index c9cd9353a86..ef34fb8513c 100755 --- a/lib/libc/tests/secure/generate-fortify-tests.lua +++ b/lib/libc/tests/secure/generate-fortify-tests.lua @@ -411,6 +411,7 @@ local all_tests = { "__buf", "__len", }, + init = stdio_init, }, { func = "readv", @@ -435,6 +436,7 @@ local all_tests = { "__len", "0", }, + init = stdio_init, }, { func = "preadv",