[LTP] [PATCH] open: fix directory verification and misleading test description
Jinseok Kim
always.starving0@gmail.com
Wed Feb 11 18:16:10 CET 2026
The directory test treated S_IFDIR as a permission bit and verified
it using a generic st_mode bitwise check, which is not appropriate
for file type verification.
Use S_ISDIR() when verifying directories and keep bitwise checks
only for permission bits such as S_ISVTX.
The directory test case also referred to a "directory bit", which is
misleading since directories are identified by file type rather than
a permission bit.
Signed-off-by: Jinseok Kim <always.starving0@gmail.com>
---
testcases/kernel/syscalls/open/open01.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/testcases/kernel/syscalls/open/open01.c b/testcases/kernel/syscalls/open/open01.c
index baf73ab11..1355592e1 100644
--- a/testcases/kernel/syscalls/open/open01.c
+++ b/testcases/kernel/syscalls/open/open01.c
@@ -37,7 +37,7 @@ static struct tcase {
char *desc;
} tcases[] = {
{TEST_FILE, O_RDWR | O_CREAT, 01444, S_ISVTX, "sticky bit"},
- {TEST_DIR, O_DIRECTORY, 0, S_IFDIR, "sirectory bit"}
+ {TEST_DIR, O_DIRECTORY, 0, S_IFDIR, "directory"}
};
static void verify_open(unsigned int n)
@@ -53,11 +53,17 @@ static void verify_open(unsigned int n)
fd = TST_RET;
SAFE_FSTAT(fd, &buf);
- if (!(buf.st_mode & tc->tst_bit))
- tst_res(TFAIL, "%s is cleared unexpectedly", tc->desc);
- else
- tst_res(TPASS, "%s is set as expected", tc->desc);
-
+ if (tc->tst_bit == S_ISVTX) {
+ if (!(buf.st_mode & S_ISVTX))
+ tst_res(TFAIL, "%s is cleared unexpectedly", tc->desc);
+ else
+ tst_res(TPASS, "%s is set as expected", tc->desc);
+ } else if (tc->tst_bit == S_IFDIR) {
+ if (!S_ISDIR(buf.st_mode))
+ tst_res(TFAIL, "%s is not a directory", tc->desc);
+ else
+ tst_res(TPASS, "%s is a directory", tc->desc);
+ }
SAFE_CLOSE(fd);
if (S_ISREG(buf.st_mode))
SAFE_UNLINK(tc->filename);
--
2.43.0
More information about the ltp
mailing list