mirror-linux/tools/testing/selftests
Mickaël Salaün 2a69962be4 samples/check-exec: Add an enlighten "inc" interpreter and 28 tests
Add a very simple script interpreter called "inc" that can evaluate two
different commands (one per line):
- "?" to initialize a counter from user's input;
- "+" to increment the counter (which is set to 0 by default).

It is enlighten to only interpret executable files according to
AT_EXECVE_CHECK and the related securebits:

  # Executing a script with RESTRICT_FILE is only allowed if the script
  # is executable:
  ./set-exec -f -- ./inc script-exec.inc # Allowed
  ./set-exec -f -- ./inc script-noexec.inc # Denied

  # Executing stdin with DENY_INTERACTIVE is only allowed if stdin is an
  # executable regular file:
  ./set-exec -i -- ./inc -i < script-exec.inc # Allowed
  ./set-exec -i -- ./inc -i < script-noexec.inc # Denied

  # However, a pipe is not executable and it is then denied:
  cat script-noexec.inc | ./set-exec -i -- ./inc -i # Denied

  # Executing raw data (e.g. command argument) with DENY_INTERACTIVE is
  # always denied.
  ./set-exec -i -- ./inc -c "+" # Denied
  ./inc -c "$(<script-ask.inc)" # Allowed

  # To directly execute a script, we can update $PATH (used by `env`):
  PATH="${PATH}:." ./script-exec.inc

  # To execute several commands passed as argument:

Add a complete test suite to check the script interpreter against all
possible execution cases:

  make TARGETS=exec kselftest-install
  ./tools/testing/selftests/kselftest_install/run_kselftest.sh

Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Paul Moore <paul@paul-moore.com>
Cc: Serge Hallyn <serge@hallyn.com>
Signed-off-by: Mickaël Salaün <mic@digikod.net>
Link: https://lore.kernel.org/r/20241212174223.389435-8-mic@digikod.net
Signed-off-by: Kees Cook <kees@kernel.org>
2024-12-18 17:00:29 -08:00
..
acct selftest: acct: Add selftest for the acct() syscall 2024-08-01 13:55:34 -06:00
alsa selftests/alsa: Add a few missing gitignore files 2024-11-24 10:31:13 +01:00
amd-pstate
arm64 Merge branches 'for-next/gcs', 'for-next/probes', 'for-next/asm-offsets', 'for-next/tlb', 'for-next/misc', 'for-next/mte', 'for-next/sysreg', 'for-next/stacktrace', 'for-next/hwcap3', 'for-next/kselftest', 'for-next/crc32', 'for-next/guest-cca', 'for-next/haft' and 'for-next/scs', remote-tracking branch 'arm64/for-next/perf' into for-next/core 2024-11-14 12:07:16 +00:00
bpf selftests/bpf: Add more test cases for LPM trie 2024-12-06 09:14:26 -08:00
breakpoints selftests: breakpoints: use remaining time to check if suspend succeed 2024-10-02 14:37:30 -06:00
cachestat selftests: cachestat: Fix build warnings on ppc64 2024-05-29 12:24:44 -06:00
capabilities selftests/capabilities: fix warn_unused_result build warnings 2024-05-08 16:48:25 -06:00
cgroup selftests/cgroup: Fix compile error in test_cpu.c 2024-10-14 15:05:39 -10:00
clone3 clone3: clone3_cap_checkpoint_restore: remove unused MAX_PID_NS_LEVEL macro 2024-09-30 11:39:56 -06:00
connector
core selftests: core: add unshare_test to gitignore 2024-09-30 11:42:11 -06:00
cpu-hotplug
cpufreq kselftest: cpufreq: Add RTC wakeup alarm 2024-07-31 11:42:36 -06:00
damon selftests/damon: add _damon_sysfs.py to TEST_FILES 2024-12-05 19:54:44 -08:00
devices kselftest/devices/probe: Fix SyntaxWarning in regex strings for Python3 2024-10-02 14:30:58 -06:00
dma selftests/dma:remove unused variable 2024-07-11 11:23:55 -06:00
dmabuf-heaps kselftests: dmabuf-heaps: Ensure the driver name is null-terminated 2024-07-29 09:02:54 +02:00
drivers selftests: drv-net: rss_ctx: Add test for ntuple rule 2024-11-30 14:16:12 -08:00
dt kselftest: dt: Ignore nodes that have ancestors disabled 2024-09-05 07:54:16 -05:00
efivarfs
exec samples/check-exec: Add an enlighten "inc" interpreter and 28 tests 2024-12-18 17:00:29 -08:00
fchmodat2 selftests/fchmodat2: fix clang build failure due to -static-libasan 2024-06-11 15:05:05 -06:00
filelock
filesystems Char/Misc/IIO/Whatever driver subsystem updates for 6.13-rc1 2024-11-29 11:58:27 -08:00
firmware
fpu
ftrace ftrace updates for v6.13: 2024-11-20 11:34:10 -08:00
futex selftests: centralize -D_GNU_SOURCE= to CFLAGS in lib.mk 2024-07-10 12:14:51 -07:00
gpio
hid selftests/hid: fix kfunc inclusions with newer bpftool 2024-11-29 15:27:04 +01:00
ia64
intel_pstate selftests/intel_pstate: check if cpupower is installed 2024-10-28 21:18:57 -06:00
iommu iommufd/selftest: Cover IOMMU_FAULT_QUEUE_ALLOC in iommufd_fail_nth 2024-12-03 12:15:00 -04:00
ipc selftests/ipc: ksft_exit functions do not return 2024-05-06 13:57:20 -06:00
ir
kcmp selftests/kcmp: remove unused open mode 2024-05-11 15:51:43 -07:00
kexec
kmod
kselftest selftests: ktap_helpers: Fix uninitialized variable 2024-12-18 17:00:29 -08:00
kvm RISC-V Paches for the 6.13 Merge Window, Part 1 2024-11-27 11:19:09 -08:00
landlock selftests/landlock: Add tests for execveat + AT_EXECVE_CHECK 2024-12-18 17:00:29 -08:00
lib selftests: lib: remove strscpy test 2024-08-01 13:55:33 -06:00
livepatch selftests: livepatch: test livepatching a kprobed function 2024-10-22 17:13:11 +02:00
lkdtm lkdtm/bugs: add test for hung smp_call_function_single() 2024-06-17 11:17:31 -07:00
locking
lsm lsm: add IPE lsm 2024-08-19 22:36:26 -04:00
media_tests
membarrier selftests: membarrier: ksft_exit_pass() does not return 2024-05-06 13:57:20 -06:00
memfd selftests/memfd: fix spelling mistakes 2024-05-07 10:36:59 -07:00
memory-hotplug
mincore
mm selftest: hugetlb_dio: fix test naming 2024-12-05 19:54:44 -08:00
module selftests: find_symbol: Actually use load_mod() parameter 2024-11-28 11:17:38 -08:00
mount
mount_setattr selftests/mount_setattr: Fix failures on 64K PAGE_SIZE kernels 2024-11-20 09:18:48 +01:00
move_mount_set_group
mqueue selftests/mqueue: fix 5 warnings about signed/unsigned mismatches 2024-06-24 22:25:03 -07:00
nci
net selftests: rds: move test.py to TEST_FILES 2024-11-28 10:20:17 +01:00
nolibc selftests/nolibc: start qemu with 1 GiB of memory 2024-10-07 21:57:45 +02:00
nsfs
ntb
openat2 selftests/openat2: fix clang build failures: -static-libasan, LOCAL_HDRS 2024-06-11 15:00:11 -06:00
pcie_bwctrl selftests/pcie_bwctrl: Create selftests 2024-11-16 10:09:30 -06:00
perf_events selftests/perf_events: Test FASYNC with watermark wakeups 2024-04-14 22:26:33 +02:00
pid_namespace
pidfd pidfd: add ioctl to retrieve pid info 2024-10-24 13:54:51 +02:00
power_supply selftests: power_supply: Make it POSIX-compliant 2024-05-06 13:57:20 -06:00
powerpc selftests/powerpc: Remove the path after initialization. 2024-11-14 22:41:00 +11:00
prctl
proc - In the series "treewide: Refactor heap related implementation", 2024-07-21 17:56:22 -07:00
pstore
ptp selftest/ptp: update ptp selftest to exercise the gettimex options 2024-10-04 15:36:43 -07:00
ptrace
rcutorture Merge branches 'rcu/fixes', 'rcu/nocb', 'rcu/torture', 'rcu/stall' and 'rcu/srcu' into rcu/dev 2024-11-15 22:38:53 +01:00
resctrl selftests/resctrl: Replace magic constants used as array size 2024-11-04 17:02:03 -07:00
ring-buffer selftests/ring-buffer: Handle meta-page bigger than the system 2024-09-11 12:25:12 -04:00
riscv riscv: selftests: Add a pointer masking test 2024-10-24 14:12:58 -07:00
rlimits
rseq selftests/rseq: Fix mm_cid test failure 2024-10-11 15:05:05 -06:00
rtc selftest: rtc: Add to check rtc alarm status for alarm related test 2024-10-23 14:13:00 -06:00
rust selftests: rust: config: disable GCC_PLUGINS 2024-08-11 17:32:55 -06:00
safesetid
sched selftests/sched: fix code format issues 2024-07-11 11:23:53 -06:00
sched_ext sched_ext: Fix enq_last_no_enq_fails selftest 2024-10-25 12:20:29 -10:00
seccomp minmax: make generic MIN() and MAX() macros available everywhere 2024-07-28 15:49:18 -07:00
sgx selftests: centralize -D_GNU_SOURCE= to CFLAGS in lib.mk 2024-07-10 12:14:51 -07:00
signal selftests: Add a test mangling with uc_sigmask 2024-10-29 01:01:49 -06:00
size
sparc64
splice
static_keys
sync selftests: sync: ksft_exit_pass() does not return 2024-05-06 13:57:21 -06:00
syscall_user_dispatch selftests: sud_test: return correct emulated syscall value on RISC-V 2024-04-25 09:46:41 -07:00
sysctl
tc-testing Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2024-11-14 11:29:15 -08:00
tdx
thermal/intel
timens selftest/timerns: fix clang build failures for abs() calls 2024-07-05 13:21:48 -06:00
timers selftests:timers: remove local CLOCKID defines 2024-10-14 16:15:13 -06:00
tmpfs selftests: centralize -D_GNU_SOURCE= to CFLAGS in lib.mk 2024-07-10 12:14:51 -07:00
tpm2 selftests: tpm2: test_smoke: Run only when TPM2 is avaialable. 2024-09-17 18:56:37 +03:00
tty kselftest/tty: Report a consistent test name for the one test we run 2024-05-06 13:57:19 -06:00
turbostat tools/power turbostat: Add selftests for added perf counters 2024-07-26 13:51:25 -04:00
uevent
user_events selftests/user_events: Add non-spacing separator check 2024-05-13 12:15:46 -04:00
vDSO powerpc updates for 6.13 2024-11-23 10:44:31 -08:00
watchdog selftests/watchdog-test: Fix system accidentally reset after watchdog-test 2024-10-28 21:34:43 -06:00
wireguard Networking changes for 6.13. 2024-11-21 08:28:08 -08:00
x86 Documentation/srso: Document a method for checking safe RET operates properly 2024-08-27 09:16:35 +02:00
zram
.gitignore
Makefile pci-v6.13-changes 2024-11-26 18:05:44 -08:00
gen_kselftest_tar.sh
kselftest.h selftests: kselftest: Use strerror() on nolibc 2024-09-11 09:52:33 -06:00
kselftest_deps.sh selftests: kselftest_deps: fix l5_test() empty variable 2024-05-08 16:46:41 -06:00
kselftest_harness.h selftests: harness: rename __constructor_order for clarification 2024-08-06 13:40:26 -06:00
kselftest_install.sh
kselftest_module.h
lib.mk - 875fa64577da ("mm/hugetlb_vmemmap: fix race with speculative PFN 2024-07-21 17:15:46 -07:00
run_kselftest.sh