From: Andrea Cervesato <andrea.cervesato@suse.de>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH v5 7/7] Add lsm_set_self_attr01 test
Date: Mon, 02 Jun 2025 18:41:30 +0200 [thread overview]
Message-ID: <20250602-lsm-v5-7-5c0dd01df3c4@suse.com> (raw)
In-Reply-To: <20250602-lsm-v5-0-5c0dd01df3c4@suse.com>
From: Andrea Cervesato <andrea.cervesato@suse.com>
Verify that lsm_set_self_attr syscall is raising errors when invalid
data is provided.
Reviewed-by: Cyril Hrubis <chrubis@suse.cz>
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
runtest/syscalls | 1 +
testcases/kernel/syscalls/lsm/.gitignore | 1 +
.../kernel/syscalls/lsm/lsm_set_self_attr01.c | 110 +++++++++++++++++++++
3 files changed, 112 insertions(+)
diff --git a/runtest/syscalls b/runtest/syscalls
index 43b05d7b2ecc18bc2770c9d6c2f142537bde3252..fc336f7c76770b526c7d08bfd7b232487c1c4bda 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -763,6 +763,7 @@ lsm_get_self_attr02 lsm_get_self_attr02
lsm_get_self_attr03 lsm_get_self_attr03
lsm_list_modules01 lsm_list_modules01
lsm_list_modules02 lsm_list_modules02
+lsm_set_self_attr01 lsm_set_self_attr01
lstat01 lstat01
lstat01_64 lstat01_64
diff --git a/testcases/kernel/syscalls/lsm/.gitignore b/testcases/kernel/syscalls/lsm/.gitignore
index 766f81fd1c74a10001862f142c02ba251e666ef2..467f07cec5443393d231bbb98880b7183635dd9d 100644
--- a/testcases/kernel/syscalls/lsm/.gitignore
+++ b/testcases/kernel/syscalls/lsm/.gitignore
@@ -3,3 +3,4 @@ lsm_get_self_attr02
lsm_get_self_attr03
lsm_list_modules01
lsm_list_modules02
+lsm_set_self_attr01
diff --git a/testcases/kernel/syscalls/lsm/lsm_set_self_attr01.c b/testcases/kernel/syscalls/lsm/lsm_set_self_attr01.c
new file mode 100644
index 0000000000000000000000000000000000000000..caccdda7ecf2edaac1fa8e2dc2ccdd0aff020804
--- /dev/null
+++ b/testcases/kernel/syscalls/lsm/lsm_set_self_attr01.c
@@ -0,0 +1,110 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2024 SUSE LLC Andrea Cervesato <andrea.cervesato@suse.com>
+ */
+
+/*\
+ * Verify that lsm_set_self_attr syscall is raising errors when invalid data is
+ * provided.
+ */
+
+#include "lsm_common.h"
+
+static struct lsm_ctx *ctx;
+static struct lsm_ctx *ctx_orig;
+static struct lsm_ctx *ctx_null;
+static uint32_t ctx_size;
+static uint32_t ctx_size_small;
+static uint32_t ctx_size_big;
+static uint32_t page_size;
+
+static struct tcase {
+ uint32_t attr;
+ struct lsm_ctx **ctx;
+ uint32_t *size;
+ uint32_t flags;
+ int exp_errno;
+ char *msg;
+} tcases[] = {
+ {
+ .attr = LSM_ATTR_CURRENT,
+ .ctx = &ctx_null,
+ .size = &ctx_size,
+ .exp_errno = EFAULT,
+ .msg = "ctx is NULL",
+ },
+ {
+ .attr = LSM_ATTR_CURRENT,
+ .ctx = &ctx,
+ .size = &ctx_size_small,
+ .exp_errno = EINVAL,
+ .msg = "size is too small",
+ },
+ {
+ .attr = LSM_ATTR_CURRENT,
+ .ctx = &ctx,
+ .size = &ctx_size_big,
+ .exp_errno = E2BIG,
+ .msg = "size is too big",
+ },
+ {
+ .attr = LSM_ATTR_CURRENT,
+ .ctx = &ctx,
+ .size = &ctx_size,
+ .flags = 1,
+ .exp_errno = EINVAL,
+ .msg = "flags must be zero",
+ },
+ {
+ .attr = LSM_ATTR_CURRENT | LSM_ATTR_EXEC,
+ .ctx = &ctx,
+ .size = &ctx_size,
+ .exp_errno = EINVAL,
+ .msg = "attr is overset",
+ }
+};
+
+static void run(unsigned int n)
+{
+ struct tcase *tc = &tcases[n];
+
+ /* just in case lsm_set_self_attr() pass , we won't change
+ * LSM configuration for the following process
+ */
+ memcpy(ctx, ctx_orig, LSM_CTX_SIZE_DEFAULT);
+
+ ctx_size = page_size;
+ ctx_size_small = 1;
+ ctx_size_big = ctx_size + 1;
+
+ TST_EXP_FAIL(lsm_set_self_attr(tc->attr, *tc->ctx, *tc->size, tc->flags),
+ tc->exp_errno,
+ "%s", tc->msg);
+}
+
+static void setup(void)
+{
+ int ret;
+ uint32_t size;
+
+ verify_supported_attr_current();
+
+ page_size = SAFE_SYSCONF(_SC_PAGESIZE);
+ size = page_size;
+
+ ret = lsm_get_self_attr(LSM_ATTR_CURRENT, ctx_orig, &size, 0);
+ if (ret < 0)
+ tst_brk(TBROK, "Can't read LSM current attribute");
+}
+
+static struct tst_test test = {
+ .test = run,
+ .setup = setup,
+ .tcnt = ARRAY_SIZE(tcases),
+ .min_kver = "6.8",
+ .bufs = (struct tst_buffers[]) {
+ {&ctx, .size = LSM_CTX_SIZE_DEFAULT},
+ {&ctx_orig, .size = LSM_CTX_SIZE_DEFAULT},
+ {}
+ },
+};
--
2.43.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2025-06-02 16:44 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-02 16:41 [LTP] [PATCH v5 0/7] LSM testing suite Andrea Cervesato
2025-06-02 16:41 ` [LTP] [PATCH v5 1/7] Add fallback definitions of LSM syscalls Andrea Cervesato
2025-06-02 16:41 ` [LTP] [PATCH v5 2/7] Add lsm_get_self_attr01 test Andrea Cervesato
2025-06-02 16:48 ` Andrea Cervesato via ltp
2025-06-02 16:41 ` [LTP] [PATCH v5 3/7] Add lsm_get_self_attr02 test Andrea Cervesato
2025-06-02 16:41 ` [LTP] [PATCH v5 4/7] Add lsm_get_self_attr03 test Andrea Cervesato
2025-06-03 10:31 ` Cyril Hrubis
2025-06-02 16:41 ` [LTP] [PATCH v5 5/7] Add lsm_list_modules01 test Andrea Cervesato
2025-06-02 16:41 ` [LTP] [PATCH v5 6/7] Add lsm_list_modules02 test Andrea Cervesato
2025-06-02 16:41 ` Andrea Cervesato [this message]
2025-06-03 10:52 ` [LTP] [PATCH v5 0/7] LSM testing suite Andrea Cervesato via ltp
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=20250602-lsm-v5-7-5c0dd01df3c4@suse.com \
--to=andrea.cervesato@suse.de \
--cc=ltp@lists.linux.it \
/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.