[LTP] [PATCH v2 3/7] Add lsm_get_self_attr02 test
Andrea Cervesato
andrea.cervesato@suse.de
Fri Jan 10 13:55:42 CET 2025
From: Andrea Cervesato <andrea.cervesato@suse.com>
Verify that lsm_get_self_attr syscall is acting correctly when ctx is NULL.
The syscall can behave in different ways according to the current system
status:
- if any LSM is running inside the system, the syscall will pass and it will
provide a size as big as the attribute
- if no LSM(s) are running inside the system, the syscall will fail with -1
return code and it will provide EOPNOTSUPP errno
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
runtest/syscalls | 1 +
testcases/kernel/syscalls/lsm/.gitignore | 1 +
.../kernel/syscalls/lsm/lsm_get_self_attr02.c | 55 ++++++++++++++++++++++
3 files changed, 57 insertions(+)
diff --git a/runtest/syscalls b/runtest/syscalls
index 77ed36b2d6877bce15f29e263582e7d81f804f92..63855dd786a62fe017882549c5edcc715d9e7e18 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -757,6 +757,7 @@ lseek07 lseek07
lseek11 lseek11
lsm_get_self_attr01 lsm_get_self_attr01
+lsm_get_self_attr02 lsm_get_self_attr02
lstat01 lstat01
lstat01_64 lstat01_64
diff --git a/testcases/kernel/syscalls/lsm/.gitignore b/testcases/kernel/syscalls/lsm/.gitignore
index 49f4a9263349ce633b8decb8fff1dd1d2111cf49..9f7c9b00b026a377f1b36f483ac2c1a0adba6249 100644
--- a/testcases/kernel/syscalls/lsm/.gitignore
+++ b/testcases/kernel/syscalls/lsm/.gitignore
@@ -1 +1,2 @@
lsm_get_self_attr01
+lsm_get_self_attr02
diff --git a/testcases/kernel/syscalls/lsm/lsm_get_self_attr02.c b/testcases/kernel/syscalls/lsm/lsm_get_self_attr02.c
new file mode 100644
index 0000000000000000000000000000000000000000..de8ff95dcd0be1cdc9b80de6cde56edb1373bf0d
--- /dev/null
+++ b/testcases/kernel/syscalls/lsm/lsm_get_self_attr02.c
@@ -0,0 +1,55 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2024 SUSE LLC Andrea Cervesato <andrea.cervesato@suse.com>
+ */
+
+/*\
+ * [Description]
+ *
+ * Verify that lsm_get_self_attr syscall is acting correctly when ctx is NULL.
+ * The syscall can behave in different ways according to the current system
+ * status:
+ *
+ * - if any LSM is running inside the system, the syscall will pass and it will
+ * provide a size as big as the attribute
+ * - if no LSM(s) are running inside the system, the syscall will fail with -1
+ * return code
+ */
+#include "lsm_common.h"
+
+static uint32_t page_size;
+static uint32_t lsm_count;
+
+static void run(void)
+{
+ uint32_t size = page_size;
+
+ if (lsm_count) {
+ TST_EXP_POSITIVE(lsm_get_self_attr(
+ LSM_ATTR_CURRENT, NULL, &size, 0));
+ TST_EXP_EXPR(size > 1);
+ } else {
+ TST_EXP_FAIL(lsm_get_self_attr(
+ LSM_ATTR_CURRENT, NULL, &size, 0), EOPNOTSUPP);
+ }
+}
+
+static void setup(void)
+{
+ page_size = SAFE_SYSCONF(_SC_PAGESIZE);
+
+ if (verify_enabled_lsm("selinux"))
+ lsm_count++;
+
+ if (verify_enabled_lsm("apparmor"))
+ lsm_count++;
+
+ if (verify_enabled_lsm("smack"))
+ lsm_count++;
+}
+
+static struct tst_test test = {
+ .test_all = run,
+ .setup = setup,
+ .min_kver = "6.8",
+};
--
2.43.0
More information about the ltp
mailing list