From: Petr Vorel <pvorel@suse.cz>
To: "xuyang2018.jy@fujitsu.com" <xuyang2018.jy@fujitsu.com>
Cc: "ltp@lists.linux.it" <ltp@lists.linux.it>
Subject: Re: [LTP] [PATCH v3 0/2] mount03: Convert to new API
Date: Mon, 15 Aug 2022 16:19:28 +0200 [thread overview]
Message-ID: <YvpV8Iz+zVAhwvRv@pevik> (raw)
In-Reply-To: <f11fc30d-d875-0d60-6807-7bfa9998f21b@fujitsu.com>
Hi Xu,
...
> > diff --git testcases/kernel/syscalls/mount/mount03.c testcases/kernel/syscalls/mount/mount03.c
> > index 74b018d78..9c58783d7 100644
> > --- testcases/kernel/syscalls/mount/mount03.c
> > +++ testcases/kernel/syscalls/mount/mount03.c
> > @@ -15,7 +15,6 @@
> > #include <sys/types.h>
> > #include <sys/wait.h>
> > #include <pwd.h>
> > -#include "old_resource.h"
> > #include "tst_test.h"
> > #include "lapi/mount.h"
> > @@ -145,7 +144,7 @@ static void setup(void)
> > nobody_gid = ltpuser->pw_gid;
> > snprintf(file, PATH_MAX, "%s/%s", MNTPOINT, TESTBIN);
> > - TST_RESOURCE_COPY(NULL, TESTBIN, file);
> > + SAFE_CP(TESTBIN, file);
> I still think we should test nosuid behaviour on different filesystem
> like other test function because we have expand it to all filesystems.
> Also include tmpfs, so SAFE_CP should be in test_nosuid function
> otherwise may hit ENOENT problem.
Ah thx, good idea. I guess the point of the setup was to run copy only once, but
your points are obviously valid.
I didn't notice it before because I overlooked SAFE_EXECLP() in test_nosuid() it
had parameter TESTBIN, thus not being run from mountpoint.
nit: I suggest to move to SAFE_EXECL() as it expect path, not filename as it's
not using PATH. Similarly we could change execlp() to execl() in test_noexec(),
but I'd prefer to keep execlp(), so that we test two different libc wrappers.
> different code as below:
> [root@localhost mount]# git diff .
> diff --git a/testcases/kernel/syscalls/mount/mount03.c
> b/testcases/kernel/syscalls/mount/mount03.c
> index 74b018d78..b0582c76b 100644
> --- a/testcases/kernel/syscalls/mount/mount03.c
> +++ b/testcases/kernel/syscalls/mount/mount03.c
> @@ -21,6 +21,7 @@
> #define MNTPOINT "mntpoint"
> #define TESTBIN "mount03_setuid_test"
> +#define BIN_PATH MNTPOINT"/"TESTBIN
+1 for avoid the need of snprintf when there are 2 constants.
NOTE: we can separate 3 items with spaces:
#define BIN_PATH MNTPOINT "/" TESTBIN
But I'd rename it to TESTBIN_PATH.
Or maybe even better to use just "TEST":
#define TEST "mount03_setuid_test"
#define TEST_PATH MNTPOINT "/" TEST
> #define TEST_STR "abcdefghijklmnopqrstuvwxyz"
> #define FILE_MODE 0644
> #define SUID_MODE 0511
> @@ -75,12 +76,19 @@ static void test_nosuid(void)
> {
> pid_t pid;
> int status;
> + struct stat st;
> +
> + snprintf(file, PATH_MAX, "%s/%s", MNTPOINT, TESTBIN);
this is not needed when we have BIN_PATH
> + SAFE_CP(TESTBIN, file);
SAFE_CP(TESTBIN, BIN_PATH);
> + SAFE_STAT(file, &st);
> + if (st.st_mode != SUID_MODE)
> + SAFE_CHMOD(file, SUID_MODE);
SAFE_CHMOD(BIN_PATH, SUID_MODE);
> pid = SAFE_FORK();
> if (!pid) {
> SAFE_SETGID(nobody_gid);
> SAFE_SETREUID(-1, nobody_uid);
> - SAFE_EXECLP(TESTBIN, TESTBIN, NULL);
> + SAFE_EXECLP(BIN_PATH, TESTBIN, NULL);
> }
> SAFE_WAITPID(pid, &status, 0);
> @@ -138,18 +146,10 @@ static struct tcase {
> static void setup(void)
> {
> - struct stat st;
> struct passwd *ltpuser = SAFE_GETPWNAM("nobody");
> nobody_uid = ltpuser->pw_uid;
> nobody_gid = ltpuser->pw_gid;
> -
> - snprintf(file, PATH_MAX, "%s/%s", MNTPOINT, TESTBIN);
> - TST_RESOURCE_COPY(NULL, TESTBIN, file);
> -
> - SAFE_STAT(file, &st);
> - if (st.st_mode != SUID_MODE)
> - SAFE_CHMOD(file, SUID_MODE);
> }
> static void cleanup(void)
Final diff is below, but for readability it's temporarily also on my fork:
https://github.com/pevik/ltp/blob/57ba1ba47987a201c39764b4259a15aa39db9d2e/testcases/kernel/syscalls/mount/mount03.c
Kind regards,
Petr
> Best Regards
> Yang Xu
diff --git testcases/kernel/syscalls/mount/mount03.c testcases/kernel/syscalls/mount/mount03.c
index 9c58783d7..eef2a65c6 100644
--- testcases/kernel/syscalls/mount/mount03.c
+++ testcases/kernel/syscalls/mount/mount03.c
@@ -18,8 +18,9 @@
#include "tst_test.h"
#include "lapi/mount.h"
-#define MNTPOINT "mntpoint"
+#define MNTPOINT "mntpoint"
#define TESTBIN "mount03_setuid_test"
+#define BIN_PATH MNTPOINT "/" TESTBIN
#define TEST_STR "abcdefghijklmnopqrstuvwxyz"
#define FILE_MODE 0644
#define SUID_MODE 0511
@@ -74,12 +75,18 @@ static void test_nosuid(void)
{
pid_t pid;
int status;
+ struct stat st;
+
+ SAFE_CP(TESTBIN, BIN_PATH);
+ SAFE_STAT(BIN_PATH, &st);
+ if (st.st_mode != SUID_MODE)
+ SAFE_CHMOD(BIN_PATH, SUID_MODE);
pid = SAFE_FORK();
if (!pid) {
SAFE_SETGID(nobody_gid);
SAFE_SETREUID(-1, nobody_uid);
- SAFE_EXECLP(TESTBIN, TESTBIN, NULL);
+ SAFE_EXECL(BIN_PATH, TESTBIN, NULL);
}
SAFE_WAITPID(pid, &status, 0);
@@ -137,18 +144,10 @@ static struct tcase {
static void setup(void)
{
- struct stat st;
struct passwd *ltpuser = SAFE_GETPWNAM("nobody");
nobody_uid = ltpuser->pw_uid;
nobody_gid = ltpuser->pw_gid;
-
- snprintf(file, PATH_MAX, "%s/%s", MNTPOINT, TESTBIN);
- SAFE_CP(TESTBIN, file);
-
- SAFE_STAT(file, &st);
- if (st.st_mode != SUID_MODE)
- SAFE_CHMOD(file, SUID_MODE);
}
static void cleanup(void)
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2022-08-15 14:19 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-11 13:57 [LTP] [PATCH v3 0/2] mount03: Convert to new API Petr Vorel
2022-08-11 13:57 ` [LTP] [PATCH v3 1/2] tst_test_macros.h: Add TST_EXP_EQ_STR Petr Vorel
2022-08-15 3:17 ` xuyang2018.jy
2022-08-11 13:57 ` [LTP] [PATCH v3 2/2] mount03: Convert to new API Petr Vorel
2022-08-16 9:07 ` Cyril Hrubis
2022-08-16 9:18 ` Petr Vorel
2022-08-16 9:31 ` Cyril Hrubis
2022-08-15 5:15 ` [LTP] [PATCH v3 0/2] " xuyang2018.jy
2022-08-15 6:40 ` Petr Vorel
2022-08-15 6:58 ` xuyang2018.jy
2022-08-15 8:28 ` Petr Vorel
2022-08-15 9:57 ` xuyang2018.jy
2022-08-15 14:19 ` Petr Vorel [this message]
2022-08-16 3:40 ` xuyang2018.jy
2022-08-16 11:49 ` Petr Vorel
2022-08-16 13:01 ` Petr Vorel
2022-08-17 2:23 ` xuyang2018.jy
2022-08-22 13:28 ` Petr Vorel
2022-08-22 13:35 ` Petr Vorel
2022-08-16 4:37 ` xuyang2018.jy
2022-08-16 6:57 ` Petr Vorel
2022-08-16 7:28 ` xuyang2018.jy
2022-08-16 9:00 ` Cyril Hrubis
2022-08-16 9:06 ` Petr Vorel
2022-08-16 9:57 ` xuyang2018.jy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YvpV8Iz+zVAhwvRv@pevik \
--to=pvorel@suse.cz \
--cc=ltp@lists.linux.it \
--cc=xuyang2018.jy@fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.