From 6ef39602f449b25d12299bddb48d9d1b56c4cbca Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Thu, 27 Jun 2024 08:05:05 +0200 Subject: pkg/runtest: test feature detection Fail some features in various ways for test OS, and check that features are detected properly. --- executor/common_test.h | 27 +++++++++++++++++++++++++++ executor/executor_test.h | 19 +++++++++++++++++++ 2 files changed, 46 insertions(+) (limited to 'executor') diff --git a/executor/common_test.h b/executor/common_test.h index c5f7f5bca..d580ae2ff 100644 --- a/executor/common_test.h +++ b/executor/common_test.h @@ -129,6 +129,21 @@ static long syz_compare_zlib(volatile long data, volatile long size, volatile lo static void loop(); static int do_sandbox_none(void) { + // Test various ways how feature setup can fail. + // We don't care about these features for test OS, + // this is just to test the feature support detection code. +#if SYZ_EXECUTOR || SYZ_NET_INJECTION +#if SYZ_EXECUTOR + if (flag_net_injection) +#endif + fail("net injection is not supported"); +#endif +#if SYZ_EXECUTOR || SYZ_DEVLINK_PCI +#if SYZ_EXECUTOR + if (flag_devlink_pci) +#endif + exitf("devlink_pci is not supported"); +#endif loop(); return 0; } @@ -164,3 +179,15 @@ static long syz_inject_cover(volatile long a, volatile long b, volatile long c) } #endif #endif + +#if SYZ_EXECUTOR || SYZ_SYSCTL +static void setup_sysctl() +{ +} +#endif + +#if SYZ_EXECUTOR || (SYZ_CGROUPS && (SYZ_SANDBOX_NONE || SYZ_SANDBOX_SETUID || SYZ_SANDBOX_NAMESPACE || SYZ_SANDBOX_ANDROID)) +static void setup_cgroups() +{ +} +#endif diff --git a/executor/executor_test.h b/executor/executor_test.h index 0644e2d97..870dcb397 100644 --- a/executor/executor_test.h +++ b/executor/executor_test.h @@ -134,3 +134,22 @@ static long syz_inject_cover(volatile long a, volatile long b, volatile long c) memset(cov->data + size, 0xcd, std::min(100, cov->mmap_alloc_size - size)); return 0; } + +static const char* setup_fault() +{ + return nullptr; +} + +static const char* setup_leak() +{ + return "leak detection is not supported"; +} + +// Test various ways how feature setup can fail. +// We don't care about these features for test OS, +// this is just to test the feature support detection code. +#define SYZ_HAVE_FEATURES 1 +static feature_t features[] = { + {rpc::Feature::Fault, setup_fault}, + {rpc::Feature::Leak, setup_leak}, +}; -- cgit mrf-deployment