aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorAlexander Potapenko <glider@google.com>2025-09-09 12:09:02 +0200
committerAlexander Potapenko <glider@google.com>2025-09-09 18:27:31 +0000
commit5ac84ab421465f8f15ac9350f9f33a4416b4b3b7 (patch)
tree4bd25bbaef09bb2a4fa31877862e8d2f20b17d1f /sys
parentd291dd2d58a1885c00a60561048b6ceb1bf1206a (diff)
prog: pkg/compiler: docs: introduce the `no_squash` attribute
The `no_squash` per-syscall attribute prevents the fuzzer from generating squashed arguments to a particular syscall. This is particularly helpful for pseudo-syscalls with elaborate arguments that are hard to reason about when they are squashed - e.g. for syz_kvm_add_vcpu() that takes a SYZOS program as an input. I've considered an alternative solution that prohibits ANY for all pseudo-syscalls. But there is a bunch of existing programs (both the tests and the repros) for syscalls like syz_mount_image() for which the benefit of not passing ANY is not immediately obvious. I therefore decided to go with an explicit attribute that can later be enforced for every pseudo-syscall at compile time.
Diffstat (limited to 'sys')
-rw-r--r--sys/test/test.txt9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/test/test.txt b/sys/test/test.txt
index 71ec2a011..54cf96f9b 100644
--- a/sys/test/test.txt
+++ b/sys/test/test.txt
@@ -799,6 +799,15 @@ hint_ints {
}
# Mutation tests.
+no_squash_struct {
+ f0 int32
+ f1 int32
+ f2 int32
+ f3 int32
+ f4 array[int8]
+} [packed]
+
+mutate_no_squash(a ptr[in, no_squash_struct]) (no_squash)
mutate0()
mutate1()