[LTP] [PATCH] getdents02: Add case for errno EFAULT

Avinesh Kumar akumar@suse.de
Tue Aug 20 09:31:52 CEST 2024


Hi,

Reviewed-by: Avinesh Kumar <akumar@suse.de>


On Monday, August 19, 2024 10:22:13 AM GMT+2 Ma Xinjian via ltp wrote:
> 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);
> 

Regards,
Avinesh





More information about the ltp mailing list