diff --git a/test/src/apps/execve/execve_mt_child.c b/test/src/apps/execve/execve_mt_child.c index 93c779298..23f782fa1 100644 --- a/test/src/apps/execve/execve_mt_child.c +++ b/test/src/apps/execve/execve_mt_child.c @@ -16,7 +16,8 @@ FN_SETUP(check_child_stat) int pipefd = -1; FILE *file = CHECK_WITH(fopen(FILENAME, "r"), _ret != NULL); - fscanf(file, "%d %d %d", &pid, &exit_code, &pipefd); + CHECK_WITH(fscanf(file, "%d %d %d", &pid, &exit_code, &pipefd), + _ret == 3); CHECK(fclose(file)); CHECK(unlink(FILENAME)); @@ -36,13 +37,15 @@ FN_SETUP(check_child_stat) id = flag = -1; CHECK_WITH(stat = fopen("/proc/self/stat", "r"), stat != NULL); - fscanf(stat, "%d (execve_mt_child) %n", &id, &flag); + CHECK_WITH(fscanf(stat, "%d (execve_mt_child) %n", &id, &flag), + _ret == 1); CHECK(fclose(stat)); CHECK_WITH(getpid(), _ret == id && flag != -1); id = flag = -1; CHECK_WITH(stat = fopen("/proc/thread-self/stat", "r"), stat != NULL); - fscanf(stat, "%d (execve_mt_child) %n", &id, &flag); + CHECK_WITH(fscanf(stat, "%d (execve_mt_child) %n", &id, &flag), + _ret == 1); CHECK(fclose(stat)); CHECK_WITH(syscall(SYS_gettid), _ret == id && flag != -1); diff --git a/test/src/apps/execve/execve_mt_parent.c b/test/src/apps/execve/execve_mt_parent.c index 4e6c8765b..efd1c1402 100644 --- a/test/src/apps/execve/execve_mt_parent.c +++ b/test/src/apps/execve/execve_mt_parent.c @@ -47,13 +47,15 @@ int exec_child() id = flag = -1; CHECK_WITH(stat = fopen("/proc/self/stat", "r"), stat != NULL); - fscanf(stat, "%d (execve_mt_paren) %n", &id, &flag); + CHECK_WITH(fscanf(stat, "%d (execve_mt_paren) %n", &id, &flag), + _ret == 1); CHECK(fclose(stat)); CHECK_WITH(getpid(), _ret == id && flag != -1); id = flag = -1; CHECK_WITH(stat = fopen("/proc/thread-self/stat", "r"), stat != NULL); - fscanf(stat, "%d (execve_mt_paren) %n", &id, &flag); + CHECK_WITH(fscanf(stat, "%d (execve_mt_paren) %n", &id, &flag), + _ret == 1); CHECK(fclose(stat)); CHECK_WITH(syscall(SYS_gettid), _ret == id && flag != -1); diff --git a/test/src/apps/pseudofs/memfd_access_err.c b/test/src/apps/pseudofs/memfd_access_err.c index aab4050b2..ff9e68eb5 100644 --- a/test/src/apps/pseudofs/memfd_access_err.c +++ b/test/src/apps/pseudofs/memfd_access_err.c @@ -9,8 +9,6 @@ #include #include #include -#include -#include #include #include @@ -21,8 +19,10 @@ char memfd_path[64]; FN_SETUP(create) { int fd = CHECK(memfd_create("test_memfd", MFD_ALLOW_SEALING)); - ftruncate(fd, 4096); - CHECK(snprintf(memfd_path, sizeof(memfd_path), "/proc/self/fd/%d", fd)); + CHECK(ftruncate(fd, 4096)); + CHECK_WITH(snprintf(memfd_path, sizeof(memfd_path), "/proc/self/fd/%d", + fd), + _ret > 0 && _ret < sizeof(memfd_path)); } END_SETUP() @@ -42,6 +42,8 @@ FN_TEST(path) TEST_ERRNO(fallocate(fd, 0, 0, 100), EBADF); TEST_ERRNO(ioctl(fd, TCGETS), EBADF); TEST_ERRNO(mmap(NULL, 4096, PROT_READ, MAP_PRIVATE, fd, 0), EBADF); + + TEST_SUCC(close(fd)); } END_TEST() @@ -59,6 +61,8 @@ FN_TEST(readonly) TEST_ERRNO(fallocate(fd, 0, 0, 100), EBADF); TEST_ERRNO(ioctl(fd, TCGETS), ENOTTY); TEST_SUCC(mmap(NULL, 4096, PROT_READ, MAP_PRIVATE, fd, 0)); + + TEST_SUCC(close(fd)); } END_TEST() @@ -76,5 +80,7 @@ FN_TEST(writeonly) TEST_SUCC(fallocate(fd, 0, 0, 100)); TEST_ERRNO(ioctl(fd, TCGETS), ENOTTY); TEST_ERRNO(mmap(NULL, 4096, PROT_READ, MAP_PRIVATE, fd, 0), EACCES); + + TEST_SUCC(close(fd)); } -END_TEST() \ No newline at end of file +END_TEST() diff --git a/test/src/apps/pseudofs/pseudo_inode.c b/test/src/apps/pseudofs/pseudo_inode.c index c5ad46d6e..c188f4d79 100644 --- a/test/src/apps/pseudofs/pseudo_inode.c +++ b/test/src/apps/pseudofs/pseudo_inode.c @@ -9,7 +9,6 @@ #include #include #include -#include #include #include #include @@ -21,24 +20,28 @@ static void fd_path(int fd, char *buf, size_t buflen) { - CHECK(snprintf(buf, buflen, "/proc/self/fd/%d", fd)); + CHECK_WITH(snprintf(buf, buflen, "/proc/self/fd/%d", fd), + _ret > 0 && _ret < buflen); } -int get_mode(int fd) +static int get_mode(int fd) { char path[64]; struct stat st; + fd_path(fd, path, sizeof(path)); - CHECK(stat(path, &st)); + if (stat(path, &st) < 0) + return -1; + return st.st_mode & 0777; } -void set_mode(int fd, int mode) +static int set_mode(int fd, int mode) { - mode &= 0777; char path[64]; + fd_path(fd, path, sizeof(path)); - CHECK(chmod(path, mode)); + return chmod(path, mode & 0777); } FN_TEST(pipe_ends_share_inode) @@ -52,7 +55,7 @@ FN_TEST(pipe_ends_share_inode) TEST_RES(get_mode(pipe2[0]), _ret == 0600); TEST_RES(get_mode(pipe2[1]), _ret == 0600); - set_mode(pipe1[0], 0000); + TEST_SUCC(set_mode(pipe1[0], 0000)); TEST_RES(get_mode(pipe1[0]), _ret == 0000); TEST_RES(get_mode(pipe1[1]), _ret == 0000); @@ -69,7 +72,7 @@ FN_TEST(sockets_do_not_share_inode) TEST_RES(get_mode(sock[0]), _ret == 0777); TEST_RES(get_mode(sock[1]), _ret == 0777); - set_mode(sock[0], 0000); + TEST_SUCC(set_mode(sock[0], 0000)); TEST_RES(get_mode(sock[0]), _ret == 0000); TEST_RES(get_mode(sock[1]), _ret == 0777); @@ -83,14 +86,14 @@ FN_TEST(anon_inodefs_share_inode) // eventfd fd = TEST_SUCC(eventfd(0, EFD_CLOEXEC)); TEST_RES(get_mode(fd), _ret == 0600); - set_mode(fd, 0000); + TEST_SUCC(set_mode(fd, 0000)); TEST_RES(get_mode(fd), _ret == 0000); TEST_SUCC(close(fd)); // timerfd fd = TEST_SUCC(timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC)); TEST_RES(get_mode(fd), _ret == 0000); - set_mode(fd, 0111); + TEST_SUCC(set_mode(fd, 0111)); TEST_RES(get_mode(fd), _ret == 0111); TEST_SUCC(close(fd)); @@ -100,14 +103,14 @@ FN_TEST(anon_inodefs_share_inode) TEST_SUCC(sigaddset(&mask, SIGUSR1)); fd = TEST_SUCC(signalfd(-1, &mask, SFD_CLOEXEC)); TEST_RES(get_mode(fd), _ret == 0111); - set_mode(fd, 0222); + TEST_SUCC(set_mode(fd, 0222)); TEST_RES(get_mode(fd), _ret == 0222); TEST_SUCC(close(fd)); // epollfd fd = TEST_SUCC(epoll_create1(EPOLL_CLOEXEC)); TEST_RES(get_mode(fd), _ret == 0222); - set_mode(fd, 0600); + TEST_SUCC(set_mode(fd, 0600)); TEST_RES(get_mode(fd), _ret == 0600); TEST_SUCC(close(fd)); } diff --git a/test/src/apps/test.h b/test/src/apps/test.h index 65b088eae..e4a7e7d6b 100644 --- a/test/src/apps/test.h +++ b/test/src/apps/test.h @@ -46,15 +46,14 @@ /** Ends the definition of a setup function. */ #define END_SETUP() } -#define __CHECK(func, cond) \ - errno = 0; \ - __auto_type _ret = (func); \ - if (!(cond)) { \ - fprintf(stderr, \ - "fatal error: %s: `" #cond "` is false after `" #func \ - "` [got %s]\n", \ - __func__, strerror(errno)); \ - exit(EXIT_FAILURE); \ +#define __CHECK(func, cond) \ + errno = 0; \ + __auto_type _ret = (func); \ + if (!(cond)) { \ + fprintf(stderr, \ + "fatal error: %s: `%s` is false after `%s` [got %s]\n", \ + __func__, #cond, #func, strerror(errno)); \ + exit(EXIT_FAILURE); \ } /** @@ -105,18 +104,16 @@ static int __total_failures; __auto_type _ret = (func); \ if (errno != (err)) { \ __tests_failed++; \ - fprintf(stderr, \ - "%s: `" #func "` failed [got %s, but expected %s]\n", \ - __func__, strerror(errno), strerror(err)); \ + fprintf(stderr, "%s: `%s` failed [got %s, but expected %s]\n", \ + __func__, #func, strerror(errno), strerror(err)); \ } else if (!(cond)) { \ __tests_failed++; \ fprintf(stderr, \ - "%s: `" #func "` failed [got %s, but `" #cond \ - "` is false]\n", \ - __func__, strerror(errno)); \ + "%s: `%s` failed [got %s, but `%s` is false]\n", \ + __func__, #func, strerror(errno), #cond); \ } else { \ __tests_passed++; \ - fprintf(stderr, "%s: `" #func "` passed [got %s]\n", __func__, \ + fprintf(stderr, "%s: `%s` passed [got %s]\n", __func__, #func, \ strerror(errno)); \ }