aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2022-08-09 12:40:58 +0200
committerDmitry Vyukov <dvyukov@google.com>2022-08-10 11:45:49 +0200
commit8fad22bf840fc968171bee6cf294f026eb1e0d3a (patch)
tree2bad644606904f4e75ef6fe689bac49e91877c40 /sys
parenta12254451cfa5e5129a0c091255d502b6805adf6 (diff)
prog: generate very long file names
Generate very long file names once in a while to provoke bugs like: https://github.com/google/gvisor/commit/f857f268eceb1cdee0b2bdfa218c969c84033fcd
Diffstat (limited to 'sys')
-rw-r--r--sys/linux/init.go12
-rw-r--r--sys/linux/sys.txt6
-rw-r--r--sys/linux/sys.txt.const3
-rw-r--r--sys/test/init.go1
-rw-r--r--sys/test/test.txt2
5 files changed, 24 insertions, 0 deletions
diff --git a/sys/linux/init.go b/sys/linux/init.go
index 6c486c2ed..480ac1d96 100644
--- a/sys/linux/init.go
+++ b/sys/linux/init.go
@@ -98,6 +98,18 @@ func InitTarget(target *prog.Target) {
panic("unknown arch")
}
+ target.SpecialFileLenghts = []int{
+ int(target.GetConst("PATH_MAX")),
+ int(target.GetConst("UNIX_PATH_MAX")),
+ int(target.GetConst("NAME_MAX")),
+ int(target.GetConst("BTRFS_INO_LOOKUP_PATH_MAX")),
+ int(target.GetConst("BTRFS_INO_LOOKUP_USER_PATH_MAX")),
+ int(target.GetConst("SMB_PATH_MAX")),
+ int(target.GetConst("XT_CGROUP_PATH_MAX")),
+ int(target.GetConst("XENSTORE_REL_PATH_MAX")),
+ 1 << 16, // gVisor's MaxFilenameLen
+ }
+
if target.Arch == runtime.GOARCH {
KCOV_INIT_TRACE = uintptr(target.GetConst("KCOV_INIT_TRACE"))
KCOV_ENABLE = uintptr(target.GetConst("KCOV_ENABLE"))
diff --git a/sys/linux/sys.txt b/sys/linux/sys.txt
index 342633a8d..fc04a4385 100644
--- a/sys/linux/sys.txt
+++ b/sys/linux/sys.txt
@@ -56,6 +56,9 @@ include <uapi/linux/seccomp.h>
include <uapi/linux/watch_queue.h>
include <kernel/sched/sched.h>
include <uapi/linux/close_range.h>
+include <uapi/linux/netfilter/xt_cgroup.h>
+include <fs/cifs/cifsglob.h>
+include <xen/interface/io/xs_wire.h>
resource fd[int32]: -1
resource fd_dir[fd]: AT_FDCWD
@@ -1319,6 +1322,9 @@ _ = STA_PLL, STA_PPSFREQ, STA_PPSTIME, STA_FLL, STA_INS, STA_DEL, STA_UNSYNC, ST
# clock_adjtime modes
_ = ADJ_OFFSET, ADJ_FREQUENCY, ADJ_MAXERROR, ADJ_ESTERROR, ADJ_STATUS, ADJ_TIMECONST, ADJ_TAI, ADJ_SETOFFSET, ADJ_MICRO, ADJ_NANO, ADJ_TICK, ADJ_OFFSET_SINGLESHOT
+# Consts for target.SpecialFileLenghts.
+_ = SMB_PATH_MAX, XT_CGROUP_PATH_MAX, XENSTORE_REL_PATH_MAX
+
# misc
_ = KCOV_INIT_TRACE, KCOV_ENABLE, KCOV_DISABLE, KCOV_TRACE_PC, KCOV_TRACE_CMP, PTRACE_TRACEME, SYSLOG_ACTION_CONSOLE_ON, SYSLOG_ACTION_CONSOLE_OFF, SYSLOG_ACTION_CONSOLE_LEVEL, SYSLOG_ACTION_CLEAR, __NR_mmap2
diff --git a/sys/linux/sys.txt.const b/sys/linux/sys.txt.const
index c977820f5..d918fdc4b 100644
--- a/sys/linux/sys.txt.const
+++ b/sys/linux/sys.txt.const
@@ -503,6 +503,7 @@ SIGINFO_SIZE = 128
SIG_BLOCK = 0, mips64le:1
SIG_SETMASK = 2, mips64le:3
SIG_UNBLOCK = 1, mips64le:2
+SMB_PATH_MAX = 260
SPLICE_F_GIFT = 8
SPLICE_F_MORE = 4
SPLICE_F_MOVE = 1
@@ -586,6 +587,8 @@ WNOHANG = 1
WNOWAIT = 16777216
WSTOPPED = 2
WUNTRACED = 2
+XENSTORE_REL_PATH_MAX = 2048
+XT_CGROUP_PATH_MAX = 512
_LINUX_CAPABILITY_VERSION_1 = 429392688
_LINUX_CAPABILITY_VERSION_2 = 537333798
_LINUX_CAPABILITY_VERSION_3 = 537396514
diff --git a/sys/test/init.go b/sys/test/init.go
index ee2281f70..1da6bbf52 100644
--- a/sys/test/init.go
+++ b/sys/test/init.go
@@ -10,4 +10,5 @@ import (
func InitTarget(target *prog.Target) {
target.MakeDataMmap = targets.MakeSyzMmap(target)
+ target.SpecialFileLenghts = []int{3, 256}
}
diff --git a/sys/test/test.txt b/sys/test/test.txt
index a8e0a39fd..c780d5fe9 100644
--- a/sys/test/test.txt
+++ b/sys/test/test.txt
@@ -747,6 +747,8 @@ mutate5(filename ptr[in, filename], flags flags[open_flags]) fd
mutate6(fd fd, data ptr[in, array[int8]], size bytesize[data])
mutate7(a0 ptr[in, string], a1 len[a0])
mutate8(a0 proc[100, 4, opt])
+mutate9(filename ptr[in, filename])
+mutate10(filename ptr[out, filename])
# Test for arguments mutation
mutate_integer(b1 bool8, b2 bool8, b3 bool8, b4 bool8, b5 bool8, b6 bool8, b7 bool8, b8 bool8, i9 int64)