[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