aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-02-17 16:51:52 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-02-17 19:02:12 +0100
commitdd4fcef5a270fc39a56c0be8122fc6f18314f3cd (patch)
treec7d1dccb26b31dec062b7d493060b624c8a84f0f
parentd21a39fc48c781b8bc818b537ed4bf495d5daa89 (diff)
pkg/compiler: allow len of var-len arrays
All netfilter subsystems use this unfortunately, so demote this to a warning.
-rw-r--r--executor/syscalls_test.h10
-rw-r--r--pkg/compiler/check.go2
-rw-r--r--pkg/compiler/testdata/all.txt2
-rw-r--r--pkg/compiler/testdata/errors2.txt2
-rw-r--r--prog/size.go3
-rw-r--r--sys/test/32.go66
-rw-r--r--sys/test/64.go66
-rw-r--r--sys/test/test.txt1
8 files changed, 83 insertions, 69 deletions
diff --git a/executor/syscalls_test.h b/executor/syscalls_test.h
index d81dc0694..13e643dfc 100644
--- a/executor/syscalls_test.h
+++ b/executor/syscalls_test.h
@@ -2,8 +2,8 @@
#if 0
#define GOARCH "32"
-#define SYZ_REVISION "8c0396f8a2a8a97239cf4a67f73bb2c345ced9bf"
-unsigned syscall_count = 84;
+#define SYZ_REVISION "229a33891b79d4c76384836d58be89caaab83684"
+unsigned syscall_count = 85;
call_t syscalls[] = {
{"mmap", 0, (syscall_t)mmap},
{"mutate0", 0, (syscall_t)mutate0},
@@ -59,6 +59,7 @@ call_t syscalls[] = {
{"syz_test$length22", 0, (syscall_t)syz_test},
{"syz_test$length23", 0, (syscall_t)syz_test},
{"syz_test$length24", 0, (syscall_t)syz_test},
+ {"syz_test$length25", 0, (syscall_t)syz_test},
{"syz_test$length3", 0, (syscall_t)syz_test},
{"syz_test$length4", 0, (syscall_t)syz_test},
{"syz_test$length5", 0, (syscall_t)syz_test},
@@ -95,8 +96,8 @@ call_t syscalls[] = {
#if 0
#define GOARCH "64"
-#define SYZ_REVISION "b95102f518b7d55de0f591cbf5642d978a068932"
-unsigned syscall_count = 84;
+#define SYZ_REVISION "72bf9b428d7ccdf1adbb2ef093b656ca3564ee14"
+unsigned syscall_count = 85;
call_t syscalls[] = {
{"mmap", 0, (syscall_t)mmap},
{"mutate0", 0, (syscall_t)mutate0},
@@ -152,6 +153,7 @@ call_t syscalls[] = {
{"syz_test$length22", 0, (syscall_t)syz_test},
{"syz_test$length23", 0, (syscall_t)syz_test},
{"syz_test$length24", 0, (syscall_t)syz_test},
+ {"syz_test$length25", 0, (syscall_t)syz_test},
{"syz_test$length3", 0, (syscall_t)syz_test},
{"syz_test$length4", 0, (syscall_t)syz_test},
{"syz_test$length5", 0, (syscall_t)syz_test},
diff --git a/pkg/compiler/check.go b/pkg/compiler/check.go
index 16960b47e..003fe424f 100644
--- a/pkg/compiler/check.go
+++ b/pkg/compiler/check.go
@@ -301,7 +301,7 @@ func (comp *compiler) checkLenTarget(t *ast.Type, name, target string, fields []
desc, args, _ = comp.getArgsBase(inner, "", prog.DirIn, false)
}
if desc == typeArray && comp.isVarlen(args[0]) {
- comp.error(t.Pos, "len target %v refer to an array with"+
+ comp.warning(t.Pos, "len target %v refer to an array with"+
" variable-size elements (do you mean bytesize?)", target)
}
}
diff --git a/pkg/compiler/testdata/all.txt b/pkg/compiler/testdata/all.txt
index 6f106a25f..2bf76c28b 100644
--- a/pkg/compiler/testdata/all.txt
+++ b/pkg/compiler/testdata/all.txt
@@ -42,6 +42,8 @@ type len_temp2[DATA] {
}
foo$len_templ(a ptr[in, len_templ1[int8, int16]])
+foo$len_var0(a ptr[in, array[string]], b len[a])
+foo$len_var1(a ptr[in, array[string]], b ptr[in, len[a, int32]])
# Void type.
diff --git a/pkg/compiler/testdata/errors2.txt b/pkg/compiler/testdata/errors2.txt
index 67127c6ad..6902553af 100644
--- a/pkg/compiler/testdata/errors2.txt
+++ b/pkg/compiler/testdata/errors2.txt
@@ -64,8 +64,6 @@ foo$104(a len[parent]) ### len target parent does not exist
foo$105(a ptr[in, int32], b ptr[in, array[len[a, int32]]])
foo$106(a int32, b ptr[in, csum[a, inet, int32]])
foo$107(a int32, b ptr[in, csum[c, inet, int32]]) ### csum target c does not exist
-foo$108(a ptr[in, array[string]], b len[a]) ### len target a refer to an array with variable-size elements (do you mean bytesize?)
-foo$109(a ptr[in, array[string]], b ptr[in, len[a, int32]]) ### len target a refer to an array with variable-size elements (do you mean bytesize?)
s1 {
f1 len[s2, int32] ### len target s2 does not exist
diff --git a/prog/size.go b/prog/size.go
index e2451fe15..67f7ef754 100644
--- a/prog/size.go
+++ b/prog/size.go
@@ -127,6 +127,9 @@ func (r *randGen) mutateSize(arg *ConstArg, parent []Arg) bool {
case *VmaType:
return false
case *ArrayType:
+ if targetType.Type.Varlen() {
+ return false
+ }
elemSize = targetType.Type.Size()
}
}
diff --git a/sys/test/32.go b/sys/test/32.go
index e1783c867..7eb9ad351 100644
--- a/sys/test/32.go
+++ b/sys/test/32.go
@@ -587,94 +587,98 @@ var syscalls_32 = []*Syscall{
{ID: 53, Name: "syz_test$length24", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "len_nontemp5"}}},
}},
- {ID: 54, Name: "syz_test$length3", CallName: "syz_test", Args: []Type{
+ {ID: 54, Name: "syz_test$length25", CallName: "syz_test", Args: []Type{
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}}}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 4}}, Buf: "a0"},
+ }},
+ {ID: 55, Name: "syz_test$length3", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_len_struct"}}},
}},
- {ID: 55, Name: "syz_test$length4", CallName: "syz_test", Args: []Type{
+ {ID: 56, Name: "syz_test$length4", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_len2_struct"}}},
}},
- {ID: 56, Name: "syz_test$length5", CallName: "syz_test", Args: []Type{
+ {ID: 57, Name: "syz_test$length5", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_parent_struct"}}},
}},
- {ID: 57, Name: "syz_test$length6", CallName: "syz_test", Args: []Type{
+ {ID: 58, Name: "syz_test$length6", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_array_struct"}}},
}},
- {ID: 58, Name: "syz_test$length7", CallName: "syz_test", Args: []Type{
+ {ID: 59, Name: "syz_test$length7", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_array2_struct"}}},
}},
- {ID: 59, Name: "syz_test$length8", CallName: "syz_test", Args: []Type{
+ {ID: 60, Name: "syz_test$length8", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_complex_struct"}}},
}},
- {ID: 60, Name: "syz_test$length9", CallName: "syz_test", Args: []Type{
+ {ID: 61, Name: "syz_test$length9", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_vma_struct"}}},
}},
- {ID: 61, Name: "syz_test$missing_resource", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_missing_const_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
- {ID: 62, Name: "syz_test$opt0", CallName: "syz_test", Args: []Type{
+ {ID: 62, Name: "syz_test$missing_resource", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_missing_const_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 63, Name: "syz_test$opt0", CallName: "syz_test", Args: []Type{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "a0", TypeSize: 4, IsOptional: true}}},
}},
- {ID: 63, Name: "syz_test$opt1", CallName: "syz_test", Args: []Type{
+ {ID: 64, Name: "syz_test$opt1", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4, IsOptional: true}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", TypeSize: 4}}}},
}},
- {ID: 64, Name: "syz_test$opt2", CallName: "syz_test", Args: []Type{
+ {ID: 65, Name: "syz_test$opt2", CallName: "syz_test", Args: []Type{
&VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "a0", TypeSize: 4, IsOptional: true}},
}},
- {ID: 65, Name: "syz_test$opt3", CallName: "syz_test", Args: []Type{
+ {ID: 66, Name: "syz_test$opt3", CallName: "syz_test", Args: []Type{
&ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "a0", TypeSize: 4, IsOptional: true}}, ValuesStart: 100, ValuesPerProc: 4},
}},
- {ID: 66, Name: "syz_test$recur0", CallName: "syz_test", Args: []Type{
+ {ID: 67, Name: "syz_test$recur0", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_recur_0", Dir: 2}}},
}},
- {ID: 67, Name: "syz_test$recur1", CallName: "syz_test", Args: []Type{
+ {ID: 68, Name: "syz_test$recur1", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_recur_1", Dir: 2}}},
}},
- {ID: 68, Name: "syz_test$recur2", CallName: "syz_test", Args: []Type{
+ {ID: 69, Name: "syz_test$recur2", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_recur_2", Dir: 2}}},
}},
- {ID: 69, Name: "syz_test$regression0", CallName: "syz_test", Args: []Type{
+ {ID: 70, Name: "syz_test$regression0", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_regression0_struct", Dir: 2}}},
}},
- {ID: 70, Name: "syz_test$regression1", CallName: "syz_test", Args: []Type{
+ {ID: 71, Name: "syz_test$regression1", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a1", TypeSize: 4}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "syz_regression1_struct"}}}},
}},
- {ID: 71, Name: "syz_test$regression2", CallName: "syz_test", Args: []Type{
+ {ID: 72, Name: "syz_test$regression2", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a1", TypeSize: 4}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", TypeSize: 16}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: 1, RangeBegin: 4, RangeEnd: 4}},
}},
- {ID: 72, Name: "syz_test$res0", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
- {ID: 73, Name: "syz_test$res1", CallName: "syz_test", Args: []Type{
+ {ID: 73, Name: "syz_test$res0", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 74, Name: "syz_test$res1", CallName: "syz_test", Args: []Type{
&ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "a0", TypeSize: 4}},
}},
- {ID: 74, Name: "syz_test$struct", CallName: "syz_test", Args: []Type{
+ {ID: 75, Name: "syz_test$struct", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_struct0"}}},
}},
- {ID: 75, Name: "syz_test$syz_union3", CallName: "syz_test", Args: []Type{
+ {ID: 76, Name: "syz_test$syz_union3", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &UnionType{Key: StructKey{Name: "syz_union3"}}},
}},
- {ID: 76, Name: "syz_test$text_x86_16", CallName: "syz_test", Args: []Type{
+ {ID: 77, Name: "syz_test$text_x86_16", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4, Text: 1}},
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 4}}, Buf: "a0"},
}},
- {ID: 77, Name: "syz_test$text_x86_32", CallName: "syz_test", Args: []Type{
+ {ID: 78, Name: "syz_test$text_x86_32", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4, Text: 2}},
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 4}}, Buf: "a0"},
}},
- {ID: 78, Name: "syz_test$text_x86_64", CallName: "syz_test", Args: []Type{
+ {ID: 79, Name: "syz_test$text_x86_64", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4, Text: 3}},
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 4}}, Buf: "a0"},
}},
- {ID: 79, Name: "syz_test$text_x86_real", CallName: "syz_test", Args: []Type{
+ {ID: 80, Name: "syz_test$text_x86_real", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4}},
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 4}}, Buf: "a0"},
}},
- {ID: 80, Name: "syz_test$union0", CallName: "syz_test", Args: []Type{
+ {ID: 81, Name: "syz_test$union0", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_union0_struct"}}},
}},
- {ID: 81, Name: "syz_test$union1", CallName: "syz_test", Args: []Type{
+ {ID: 82, Name: "syz_test$union1", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_union1_struct"}}},
}},
- {ID: 82, Name: "syz_test$union2", CallName: "syz_test", Args: []Type{
+ {ID: 83, Name: "syz_test$union2", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_union2_struct"}}},
}},
- {ID: 83, Name: "syz_test$vma0", CallName: "syz_test", Args: []Type{
+ {ID: 84, Name: "syz_test$vma0", CallName: "syz_test", Args: []Type{
&VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "v0", TypeSize: 4}},
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "l0", TypeSize: 4}}, Buf: "v0"},
&VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "v1", TypeSize: 4}, RangeBegin: 5, RangeEnd: 5},
@@ -691,4 +695,4 @@ var consts_32 = []ConstValue{
{Name: "ONLY_32BITS_CONST", Value: 1},
}
-const revision_32 = "8c0396f8a2a8a97239cf4a67f73bb2c345ced9bf"
+const revision_32 = "229a33891b79d4c76384836d58be89caaab83684"
diff --git a/sys/test/64.go b/sys/test/64.go
index 8cced3be3..943bd9ee0 100644
--- a/sys/test/64.go
+++ b/sys/test/64.go
@@ -586,94 +586,98 @@ var syscalls_64 = []*Syscall{
{ID: 53, Name: "syz_test$length24", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "len_nontemp5"}}},
}},
- {ID: 54, Name: "syz_test$length3", CallName: "syz_test", Args: []Type{
+ {ID: 54, Name: "syz_test$length25", CallName: "syz_test", Args: []Type{
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}}}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 8}}, Buf: "a0"},
+ }},
+ {ID: 55, Name: "syz_test$length3", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_len_struct"}}},
}},
- {ID: 55, Name: "syz_test$length4", CallName: "syz_test", Args: []Type{
+ {ID: 56, Name: "syz_test$length4", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_len2_struct"}}},
}},
- {ID: 56, Name: "syz_test$length5", CallName: "syz_test", Args: []Type{
+ {ID: 57, Name: "syz_test$length5", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_parent_struct"}}},
}},
- {ID: 57, Name: "syz_test$length6", CallName: "syz_test", Args: []Type{
+ {ID: 58, Name: "syz_test$length6", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_array_struct"}}},
}},
- {ID: 58, Name: "syz_test$length7", CallName: "syz_test", Args: []Type{
+ {ID: 59, Name: "syz_test$length7", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_array2_struct"}}},
}},
- {ID: 59, Name: "syz_test$length8", CallName: "syz_test", Args: []Type{
+ {ID: 60, Name: "syz_test$length8", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_complex_struct"}}},
}},
- {ID: 60, Name: "syz_test$length9", CallName: "syz_test", Args: []Type{
+ {ID: 61, Name: "syz_test$length9", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_vma_struct"}}},
}},
- {ID: 61, Name: "syz_test$missing_resource", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_missing_const_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
- {ID: 62, Name: "syz_test$opt0", CallName: "syz_test", Args: []Type{
+ {ID: 62, Name: "syz_test$missing_resource", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_missing_const_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 63, Name: "syz_test$opt0", CallName: "syz_test", Args: []Type{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "a0", TypeSize: 8, IsOptional: true}}},
}},
- {ID: 63, Name: "syz_test$opt1", CallName: "syz_test", Args: []Type{
+ {ID: 64, Name: "syz_test$opt1", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8, IsOptional: true}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", TypeSize: 8}}}},
}},
- {ID: 64, Name: "syz_test$opt2", CallName: "syz_test", Args: []Type{
+ {ID: 65, Name: "syz_test$opt2", CallName: "syz_test", Args: []Type{
&VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "a0", TypeSize: 8, IsOptional: true}},
}},
- {ID: 65, Name: "syz_test$opt3", CallName: "syz_test", Args: []Type{
+ {ID: 66, Name: "syz_test$opt3", CallName: "syz_test", Args: []Type{
&ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "a0", TypeSize: 8, IsOptional: true}}, ValuesStart: 100, ValuesPerProc: 4},
}},
- {ID: 66, Name: "syz_test$recur0", CallName: "syz_test", Args: []Type{
+ {ID: 67, Name: "syz_test$recur0", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_recur_0", Dir: 2}}},
}},
- {ID: 67, Name: "syz_test$recur1", CallName: "syz_test", Args: []Type{
+ {ID: 68, Name: "syz_test$recur1", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_recur_1", Dir: 2}}},
}},
- {ID: 68, Name: "syz_test$recur2", CallName: "syz_test", Args: []Type{
+ {ID: 69, Name: "syz_test$recur2", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_recur_2", Dir: 2}}},
}},
- {ID: 69, Name: "syz_test$regression0", CallName: "syz_test", Args: []Type{
+ {ID: 70, Name: "syz_test$regression0", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_regression0_struct", Dir: 2}}},
}},
- {ID: 70, Name: "syz_test$regression1", CallName: "syz_test", Args: []Type{
+ {ID: 71, Name: "syz_test$regression1", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a1", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "syz_regression1_struct"}}}},
}},
- {ID: 71, Name: "syz_test$regression2", CallName: "syz_test", Args: []Type{
+ {ID: 72, Name: "syz_test$regression2", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a1", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", TypeSize: 16}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: 1, RangeBegin: 4, RangeEnd: 4}},
}},
- {ID: 72, Name: "syz_test$res0", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
- {ID: 73, Name: "syz_test$res1", CallName: "syz_test", Args: []Type{
+ {ID: 73, Name: "syz_test$res0", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 74, Name: "syz_test$res1", CallName: "syz_test", Args: []Type{
&ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "a0", TypeSize: 4}},
}},
- {ID: 74, Name: "syz_test$struct", CallName: "syz_test", Args: []Type{
+ {ID: 75, Name: "syz_test$struct", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_struct0"}}},
}},
- {ID: 75, Name: "syz_test$syz_union3", CallName: "syz_test", Args: []Type{
+ {ID: 76, Name: "syz_test$syz_union3", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &UnionType{Key: StructKey{Name: "syz_union3"}}},
}},
- {ID: 76, Name: "syz_test$text_x86_16", CallName: "syz_test", Args: []Type{
+ {ID: 77, Name: "syz_test$text_x86_16", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4, Text: 1}},
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 8}}, Buf: "a0"},
}},
- {ID: 77, Name: "syz_test$text_x86_32", CallName: "syz_test", Args: []Type{
+ {ID: 78, Name: "syz_test$text_x86_32", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4, Text: 2}},
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 8}}, Buf: "a0"},
}},
- {ID: 78, Name: "syz_test$text_x86_64", CallName: "syz_test", Args: []Type{
+ {ID: 79, Name: "syz_test$text_x86_64", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4, Text: 3}},
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 8}}, Buf: "a0"},
}},
- {ID: 79, Name: "syz_test$text_x86_real", CallName: "syz_test", Args: []Type{
+ {ID: 80, Name: "syz_test$text_x86_real", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4}},
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "a1", TypeSize: 8}}, Buf: "a0"},
}},
- {ID: 80, Name: "syz_test$union0", CallName: "syz_test", Args: []Type{
+ {ID: 81, Name: "syz_test$union0", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_union0_struct"}}},
}},
- {ID: 81, Name: "syz_test$union1", CallName: "syz_test", Args: []Type{
+ {ID: 82, Name: "syz_test$union1", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_union1_struct"}}},
}},
- {ID: 82, Name: "syz_test$union2", CallName: "syz_test", Args: []Type{
+ {ID: 83, Name: "syz_test$union2", CallName: "syz_test", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_union2_struct"}}},
}},
- {ID: 83, Name: "syz_test$vma0", CallName: "syz_test", Args: []Type{
+ {ID: 84, Name: "syz_test$vma0", CallName: "syz_test", Args: []Type{
&VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "v0", TypeSize: 8}},
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "l0", TypeSize: 8}}, Buf: "v0"},
&VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "v1", TypeSize: 8}, RangeBegin: 5, RangeEnd: 5},
@@ -689,4 +693,4 @@ var consts_64 = []ConstValue{
{Name: "IPPROTO_UDP", Value: 17},
}
-const revision_64 = "b95102f518b7d55de0f591cbf5642d978a068932"
+const revision_64 = "72bf9b428d7ccdf1adbb2ef093b656ca3564ee14"
diff --git a/sys/test/test.txt b/sys/test/test.txt
index e6c852aa8..7745e236d 100644
--- a/sys/test/test.txt
+++ b/sys/test/test.txt
@@ -371,6 +371,7 @@ len_nontemp5 {
}
syz_test$length24(a ptr[in, len_nontemp5])
+syz_test$length25(a0 ptr[in, array[array[int8]]], a1 len[a0])
# Big endian