[LTP] [PATCH] getdents02: Add case for errno EFAULT
Ma Xinjian
maxj.fnst@fujitsu.com
Mon Aug 19 10:22:13 CEST 2024
Currently there is no case for EFAULT, so a new case is added.
Signed-off-by: Ma Xinjian <maxj.fnst@fujitsu.com>
---
testcases/kernel/syscalls/getdents/getdents02.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/testcases/kernel/syscalls/getdents/getdents02.c b/testcases/kernel/syscalls/getdents/getdents02.c
index ade1c9476..578db9d1e 100644
--- a/testcases/kernel/syscalls/getdents/getdents02.c
+++ b/testcases/kernel/syscalls/getdents/getdents02.c
@@ -15,6 +15,7 @@
* - getdents() fails with EINVAL if result buffer is too small
* - getdents() fails with ENOTDIR if file descriptor does not refer to a directory
* - getdents() fails with ENOENT if directory was unlinked()
+ * - getdents() fails with EFAULT if argument points outside the calling process's address space
*/
#define _GNU_SOURCE
@@ -34,6 +35,7 @@ static size_t size;
static char dirp1_arr[1];
static char *dirp1 = dirp1_arr;
+static char *dirp_bad;
static size_t size1 = 1;
static int fd_inv = -5;
@@ -51,6 +53,7 @@ static struct tcase {
{ &fd, &dirp1, &size1, EINVAL },
{ &fd_file, &dirp, &size, ENOTDIR },
{ &fd_unlinked, &dirp, &size, ENOENT },
+ { &fd, &dirp_bad, &size, EFAULT },
};
static void setup(void)
@@ -63,6 +66,8 @@ static void setup(void)
fd = SAFE_OPEN(".", O_RDONLY);
fd_file = SAFE_OPEN("test", O_CREAT | O_RDWR, 0644);
+ dirp_bad = tst_get_bad_addr(NULL);
+
SAFE_MKDIR(TEST_DIR, DIR_MODE);
fd_unlinked = SAFE_OPEN(TEST_DIR, O_DIRECTORY);
SAFE_RMDIR(TEST_DIR);
--
2.42.0
More information about the ltp
mailing list