From d824f59a2e565ab89320c36582871509b3d0e401 Mon Sep 17 00:00:00 2001 From: Andrea Cervesato Date: Thu, 22 Feb 2024 16:32:17 +0100 Subject: [PATCH] Add more testcases in mkdir03 We add more test cases in mkdir03 in order to check that mkdir() can't overwrite certain types of files, such as symlinks, directories, pipes, devices, etc. These test cases come from symlink01 refactoring. Link: https://lore.kernel.org/ltp/20240222153217.1046-1-andrea.cervesato@suse.de/ Reviewed-by: Cyril Hrubis Reviewed-by: Petr Vorel Signed-off-by: Andrea Cervesato --- runtest/syscalls | 1 - testcases/kernel/syscalls/mkdir/mkdir03.c | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/runtest/syscalls b/runtest/syscalls index 7794f14653e..fab870aced0 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -757,7 +757,6 @@ mkdir02 mkdir02 mkdir03 mkdir03 mkdir04 mkdir04 mkdir05 mkdir05 -mkdir05A symlink01 -T mkdir05 mkdir09 mkdir09 #mkdirat test cases diff --git a/testcases/kernel/syscalls/mkdir/mkdir03.c b/testcases/kernel/syscalls/mkdir/mkdir03.c index d5141bb6487..40d819642e4 100644 --- a/testcases/kernel/syscalls/mkdir/mkdir03.c +++ b/testcases/kernel/syscalls/mkdir/mkdir03.c @@ -9,6 +9,8 @@ * EFAULT, ENAMETOOLONG, EEXIST, ENOENT, ENOTDIR, ELOOP and EROFS */ +#include +#include #include #include #include @@ -19,6 +21,10 @@ #include "tst_test.h" #define TST_EEXIST "tst_eexist" +#define TST_PIPE "tst_pipe" +#define TST_FOLDER "tst_folder" +#define TST_SYMLINK "tst_symlink" +#define TST_NULLDEV _PATH_DEVNULL #define TST_ENOENT "tst_enoent/tst" #define TST_ENOTDIR_FILE "tst_enotdir" #define TST_ENOTDIR_DIR "tst_enotdir/tst" @@ -41,6 +47,10 @@ static struct tcase { {NULL, EFAULT}, {long_dir, ENAMETOOLONG}, {TST_EEXIST, EEXIST}, + {TST_FOLDER, EEXIST}, + {TST_PIPE, EEXIST}, + {TST_SYMLINK, EEXIST}, + {TST_NULLDEV, EEXIST}, {TST_ENOENT, ENOENT}, {TST_ENOTDIR_DIR, ENOTDIR}, {loop_dir, ELOOP}, @@ -70,7 +80,13 @@ static void verify_mkdir(unsigned int n) static void setup(void) { unsigned int i; + char *tmpdir = tst_get_tmpdir(); + SAFE_SYMLINK(tmpdir, TST_SYMLINK); + free(tmpdir); + + SAFE_MKFIFO(TST_PIPE, 0777); + SAFE_MKDIR(TST_FOLDER, 0777); SAFE_TOUCH(TST_EEXIST, MODE, NULL); SAFE_TOUCH(TST_ENOTDIR_FILE, MODE, NULL);