diff mbox series

[v2] Add more testcases in mkdir03

Message ID 20240222150036.30594-1-andrea.cervesato@suse.de
State Superseded
Headers show
Series [v2] Add more testcases in mkdir03 | expand

Commit Message

Andrea Cervesato Feb. 22, 2024, 3 p.m. UTC
From: Andrea Cervesato <andrea.cervesato@suse.com>

We add more test cases in mkdir03 in order to check that mkdir()
can't overwrite certain types of files, such as simlinks, directories,
pipes, devices, etc.
These test cases come from symlink01 refactoring.

Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
Removed mkdir10
free() tmpdir

 runtest/syscalls                          |  1 -
 testcases/kernel/syscalls/mkdir/mkdir03.c | 13 +++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

Comments

Cyril Hrubis Feb. 22, 2024, 3:10 p.m. UTC | #1
Hi!
>  #define TST_ENOTDIR_DIR	"tst_enotdir/tst"
> @@ -41,6 +45,9 @@ static struct tcase {
>  	{NULL, EFAULT},
>  	{long_dir, ENAMETOOLONG},
>  	{TST_EEXIST, EEXIST},
> +	{TST_FOLDER, EEXIST},
> +	{TST_PIPE, EEXIST},
> +	{TST_SYMLINK, EEXIST},
This stil misses:

	{"/dev/zero", EEXISTS},

>  	{TST_ENOENT, ENOENT},
>  	{TST_ENOTDIR_DIR, ENOTDIR},
>  	{loop_dir, ELOOP},

Other than that:

Reviewed-by: Cyril Hrubis <chrubis@suse.cz>
diff mbox series

Patch

diff --git a/runtest/syscalls b/runtest/syscalls
index ef90076e4..e913eeecd 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 d5141bb64..fe847bdca 100644
--- a/testcases/kernel/syscalls/mkdir/mkdir03.c
+++ b/testcases/kernel/syscalls/mkdir/mkdir03.c
@@ -9,6 +9,7 @@ 
  *	EFAULT, ENAMETOOLONG, EEXIST, ENOENT, ENOTDIR, ELOOP and EROFS
  */
 
+#include <stdlib.h>
 #include <errno.h>
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -19,6 +20,9 @@ 
 #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_ENOENT	"tst_enoent/tst"
 #define TST_ENOTDIR_FILE "tst_enotdir"
 #define TST_ENOTDIR_DIR	"tst_enotdir/tst"
@@ -41,6 +45,9 @@  static struct tcase {
 	{NULL, EFAULT},
 	{long_dir, ENAMETOOLONG},
 	{TST_EEXIST, EEXIST},
+	{TST_FOLDER, EEXIST},
+	{TST_PIPE, EEXIST},
+	{TST_SYMLINK, EEXIST},
 	{TST_ENOENT, ENOENT},
 	{TST_ENOTDIR_DIR, ENOTDIR},
 	{loop_dir, ELOOP},
@@ -70,7 +77,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);