[LTP] [PATCH v4 1/2] syscalls/mount03: Copy setuid_test to execute instead of 'TEST FILE'
Punit Agrawal
punit.agrawal@arm.com
Fri Dec 8 15:07:37 CET 2017
When testing the MS_NOSUID mount flag, mount03 forgets to copy
setuid_test into the new filesystem. Instead it writes 'TEST FILE' into
a new file and attempts to execute it with S_ISUID. This fails, but not
for the reasons ltp expects.
Fix this by copying the test helper binary instead.
While we're touching the test, also rename the helper to
mount03_setuid_test so as to follow current ltp convention.
Signed-off-by: Punit Agrawal <punit.agrawal@arm.com>
---
Changes since v3:
* Dropped the duplicate TST_RESOURCE_COPY()
* Moved setting SUID_MODE to setup()
testcases/kernel/syscalls/mount/mount03.c | 26 +++++++++++++---------
.../mount/{setuid_test.c => mount03_setuid_test.c} | 0
2 files changed, 15 insertions(+), 11 deletions(-)
rename testcases/kernel/syscalls/mount/{setuid_test.c => mount03_setuid_test.c} (100%)
diff --git a/testcases/kernel/syscalls/mount/mount03.c b/testcases/kernel/syscalls/mount/mount03.c
index bf78c797f..6603fb77a 100644
--- a/testcases/kernel/syscalls/mount/mount03.c
+++ b/testcases/kernel/syscalls/mount/mount03.c
@@ -261,15 +261,7 @@ int test_rwflag(int i, int cnt)
case 5:
/* Validate MS_NOSUID flag of mount call */
- snprintf(file, PATH_MAX, "%ssetuid_test", path_name);
- SAFE_FILE_PRINTF(cleanup, file, "TEST FILE");
-
- SAFE_STAT(cleanup, file, &file_stat);
-
- if (file_stat.st_mode != SUID_MODE &&
- chmod(file, SUID_MODE) < 0)
- tst_brkm(TBROK, cleanup,
- "setuid for setuid_test failed");
+ snprintf(file, PATH_MAX, "%smount03_setuid_test", path_name);
pid = fork();
switch (pid) {
@@ -291,9 +283,8 @@ int test_rwflag(int i, int cnt)
/* reset the setup_uid */
if (status)
return 0;
- else
- return 1;
}
+ return 1;
}
case 6:
/* Validate MS_NOATIME flag of mount call */
@@ -346,6 +337,7 @@ int test_rwflag(int i, int cnt)
static void setup(void)
{
char path[PATH_MAX];
+ struct stat file_stat;
tst_sig(FORK, DEF_HANDLER, cleanup);
@@ -373,6 +365,18 @@ static void setup(void)
strncpy(path, path_name, PATH_MAX);
snprintf(path_name, PATH_MAX, "%s/%s/", path, mntpoint);
+ SAFE_MOUNT(cleanup, device, mntpoint, fs_type, 0, NULL);
+ TST_RESOURCE_COPY(cleanup, "mount03_setuid_test", path_name);
+
+ snprintf(file, PATH_MAX, "%smount03_setuid_test", path_name);
+ SAFE_STAT(cleanup, file, &file_stat);
+
+ if (file_stat.st_mode != SUID_MODE &&
+ chmod(file, SUID_MODE) < 0)
+ tst_brkm(TBROK, cleanup,
+ "setuid for setuid_test failed");
+ SAFE_UMOUNT(cleanup, mntpoint);
+
TEST_PAUSE;
}
diff --git a/testcases/kernel/syscalls/mount/setuid_test.c b/testcases/kernel/syscalls/mount/mount03_setuid_test.c
similarity index 100%
rename from testcases/kernel/syscalls/mount/setuid_test.c
rename to testcases/kernel/syscalls/mount/mount03_setuid_test.c
--
2.15.0
More information about the ltp
mailing list