mirror of
https://github.com/reactos/syzkaller.git
synced 2025-02-14 16:38:40 +00:00
pkg/compiler, prog: fix template parent lens
It's possible that a struct can have 2+ parents, which is the same template (differs only by arguments). See the new test case. Support such case.
This commit is contained in:
parent
e5b101ddff
commit
ca9c302d80
@ -2,8 +2,8 @@
|
||||
|
||||
#if 0
|
||||
#define GOARCH "32"
|
||||
#define SYZ_REVISION "b9cbeaf95275aebd2bf6f299b1071f67344453a5"
|
||||
unsigned syscall_count = 82;
|
||||
#define SYZ_REVISION "bbf8d8ed4354030a23f6bde2600005f3f6c9bb91"
|
||||
unsigned syscall_count = 83;
|
||||
call_t syscalls[] = {
|
||||
{"mmap", 0, (syscall_t)mmap},
|
||||
{"mutate0", 0, (syscall_t)mutate0},
|
||||
@ -58,6 +58,7 @@ call_t syscalls[] = {
|
||||
{"syz_test$length21", 0, (syscall_t)syz_test},
|
||||
{"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$length3", 0, (syscall_t)syz_test},
|
||||
{"syz_test$length4", 0, (syscall_t)syz_test},
|
||||
{"syz_test$length5", 0, (syscall_t)syz_test},
|
||||
@ -93,8 +94,8 @@ call_t syscalls[] = {
|
||||
|
||||
#if 0
|
||||
#define GOARCH "64"
|
||||
#define SYZ_REVISION "ed5cfa6417cbae5ddc998f597dcdbb96fea761c3"
|
||||
unsigned syscall_count = 82;
|
||||
#define SYZ_REVISION "04defb49ad13778b83e2676461ef16d009d6128d"
|
||||
unsigned syscall_count = 83;
|
||||
call_t syscalls[] = {
|
||||
{"mmap", 0, (syscall_t)mmap},
|
||||
{"mutate0", 0, (syscall_t)mutate0},
|
||||
@ -149,6 +150,7 @@ call_t syscalls[] = {
|
||||
{"syz_test$length21", 0, (syscall_t)syz_test},
|
||||
{"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$length3", 0, (syscall_t)syz_test},
|
||||
{"syz_test$length4", 0, (syscall_t)syz_test},
|
||||
{"syz_test$length5", 0, (syscall_t)syz_test},
|
||||
|
@ -269,15 +269,14 @@ func (comp *compiler) checkLenType(t *ast.Type, name string, fields []*ast.Field
|
||||
for i, arg := range args {
|
||||
argDesc := desc.Args[i]
|
||||
if argDesc.Type == typeArgLenTarget {
|
||||
comp.checkLenTarget(t, name, &arg.Ident, fields, parents)
|
||||
comp.checkLenTarget(t, name, arg.Ident, fields, parents)
|
||||
} else if argDesc.Type == typeArgType {
|
||||
comp.checkLenType(arg, name, fields, parents, checked, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (comp *compiler) checkLenTarget(t *ast.Type, name string, targetp *string, fields []*ast.Field, parents []*ast.Struct) {
|
||||
target := *targetp
|
||||
func (comp *compiler) checkLenTarget(t *ast.Type, name, target string, fields []*ast.Field, parents []*ast.Struct) {
|
||||
if target == name {
|
||||
comp.error(t.Pos, "%v target %v refer to itself", t.Ident, target)
|
||||
return
|
||||
@ -315,12 +314,10 @@ func (comp *compiler) checkLenTarget(t *ast.Type, name string, targetp *string,
|
||||
for _, parent := range parents {
|
||||
parentName := parent.Name.Name
|
||||
if pos := strings.IndexByte(parentName, '['); pos != -1 {
|
||||
// For template parents name is "struct_name[ARG1, ARG2]",
|
||||
// strip the part after '[' and update actual len target.
|
||||
// For template parents name is "struct_name[ARG1, ARG2]", strip the part after '['.
|
||||
parentName = parentName[:pos]
|
||||
}
|
||||
if target == parentName {
|
||||
*targetp = parent.Name.Name
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ package prog
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func (target *Target) generateSize(arg Arg, lenType *LenType) uint64 {
|
||||
@ -67,7 +68,12 @@ func (target *Target) assignSizes(args []Arg, parentsMap map[Arg]Arg) {
|
||||
|
||||
sizeAssigned := false
|
||||
for parent := parentsMap[arg]; parent != nil; parent = parentsMap[parent] {
|
||||
if typ.Buf == parent.Type().Name() {
|
||||
parentName := parent.Type().Name()
|
||||
if pos := strings.IndexByte(parentName, '['); pos != -1 {
|
||||
// For template parents, strip arguments.
|
||||
parentName = parentName[:pos]
|
||||
}
|
||||
if typ.Buf == parentName {
|
||||
a.Val = parent.Size()
|
||||
if typ.BitSize != 0 {
|
||||
a.Val = a.Val * 8 / typ.BitSize
|
||||
|
@ -130,6 +130,10 @@ func TestAssignSize(t *testing.T) {
|
||||
"syz_test$length23(&(0x7f0000000000)={0x1, {0x2, 0x0}})",
|
||||
"syz_test$length23(&(0x7f0000000000)={0x1, {0x2, 0x6}})",
|
||||
},
|
||||
{
|
||||
"syz_test$length24(&(0x7f0000000000)={{0x0, {0x0}}, {0x0, {0x0}}})",
|
||||
"syz_test$length24(&(0x7f0000000000)={{0x0, {0x8}}, {0x0, {0xc}}})",
|
||||
},
|
||||
}
|
||||
|
||||
for i, test := range tests {
|
||||
|
@ -14,9 +14,26 @@ var resources_32 = []*ResourceDesc{
|
||||
}
|
||||
|
||||
var structDescs_32 = []*KeyedStruct{
|
||||
{Key: StructKey{Name: "len_nontemp4"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_nontemp4", TypeSize: 4}, Fields: []Type{
|
||||
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "f1", TypeSize: 4}}, Buf: "len_temp3"},
|
||||
}}},
|
||||
{Key: StructKey{Name: "len_nontemp5"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_nontemp5", TypeSize: 24}, Fields: []Type{
|
||||
&StructType{Key: StructKey{Name: "len_temp3[int8]"}, FldName: "f1"},
|
||||
&StructType{Key: StructKey{Name: "len_temp3[int64]"}, FldName: "f2"},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 4}}, IsPad: true},
|
||||
}}},
|
||||
{Key: StructKey{Name: "len_temp2[int16]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_temp2[int16]", TypeSize: 3}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "data", TypeSize: 2}}},
|
||||
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 1}}, Buf: "len_templ1[int8, int16]"},
|
||||
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 1}}, Buf: "len_templ1"},
|
||||
}}},
|
||||
{Key: StructKey{Name: "len_temp3[int64]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_temp3[int64]", TypeSize: 12}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f1", TypeSize: 8}}},
|
||||
&StructType{Key: StructKey{Name: "len_nontemp4"}, FldName: "f2"},
|
||||
}}},
|
||||
{Key: StructKey{Name: "len_temp3[int8]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_temp3[int8]", TypeSize: 8}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "f1", TypeSize: 1}}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 3}}, IsPad: true},
|
||||
&StructType{Key: StructKey{Name: "len_nontemp4"}, FldName: "f2"},
|
||||
}}},
|
||||
{Key: StructKey{Name: "len_templ1[int8, int16]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_templ1[int8, int16]", TypeSize: 6}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "data", TypeSize: 1}}},
|
||||
@ -564,91 +581,94 @@ var syscalls_32 = []*Syscall{
|
||||
{ID: 52, Name: "syz_test$length23", CallName: "syz_test", Args: []Type{
|
||||
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "len_templ1[int8, int16]"}}},
|
||||
}},
|
||||
{ID: 53, Name: "syz_test$length3", CallName: "syz_test", Args: []Type{
|
||||
{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{
|
||||
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "syz_length_len_struct"}}},
|
||||
}},
|
||||
{ID: 54, Name: "syz_test$length4", CallName: "syz_test", Args: []Type{
|
||||
{ID: 55, 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: 55, Name: "syz_test$length5", CallName: "syz_test", Args: []Type{
|
||||
{ID: 56, 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: 56, Name: "syz_test$length6", CallName: "syz_test", Args: []Type{
|
||||
{ID: 57, 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: 57, Name: "syz_test$length7", CallName: "syz_test", Args: []Type{
|
||||
{ID: 58, 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: 58, Name: "syz_test$length8", CallName: "syz_test", Args: []Type{
|
||||
{ID: 59, 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: 59, Name: "syz_test$length9", CallName: "syz_test", Args: []Type{
|
||||
{ID: 60, 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: 60, Name: "syz_test$missing_resource", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_missing_const_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
|
||||
{ID: 61, Name: "syz_test$opt0", CallName: "syz_test", Args: []Type{
|
||||
{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{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "a0", TypeSize: 4, IsOptional: true}}},
|
||||
}},
|
||||
{ID: 62, Name: "syz_test$opt1", CallName: "syz_test", Args: []Type{
|
||||
{ID: 63, 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: 63, Name: "syz_test$opt2", CallName: "syz_test", Args: []Type{
|
||||
{ID: 64, Name: "syz_test$opt2", CallName: "syz_test", Args: []Type{
|
||||
&VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "a0", TypeSize: 4, IsOptional: true}},
|
||||
}},
|
||||
{ID: 64, Name: "syz_test$opt3", CallName: "syz_test", Args: []Type{
|
||||
{ID: 65, 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: 65, Name: "syz_test$recur0", CallName: "syz_test", Args: []Type{
|
||||
{ID: 66, 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: 66, Name: "syz_test$recur1", CallName: "syz_test", Args: []Type{
|
||||
{ID: 67, 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: 67, Name: "syz_test$recur2", CallName: "syz_test", Args: []Type{
|
||||
{ID: 68, 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: 68, Name: "syz_test$regression0", CallName: "syz_test", Args: []Type{
|
||||
{ID: 69, 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: 69, Name: "syz_test$regression1", CallName: "syz_test", Args: []Type{
|
||||
{ID: 70, 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: 70, Name: "syz_test$regression2", CallName: "syz_test", Args: []Type{
|
||||
{ID: 71, 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: 71, Name: "syz_test$res0", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
|
||||
{ID: 72, Name: "syz_test$res1", CallName: "syz_test", Args: []Type{
|
||||
{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{
|
||||
&ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "a0", TypeSize: 4}},
|
||||
}},
|
||||
{ID: 73, Name: "syz_test$struct", CallName: "syz_test", Args: []Type{
|
||||
{ID: 74, 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: 74, Name: "syz_test$text_x86_16", CallName: "syz_test", Args: []Type{
|
||||
{ID: 75, 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: 75, Name: "syz_test$text_x86_32", CallName: "syz_test", Args: []Type{
|
||||
{ID: 76, 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: 76, Name: "syz_test$text_x86_64", CallName: "syz_test", Args: []Type{
|
||||
{ID: 77, 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: 77, Name: "syz_test$text_x86_real", CallName: "syz_test", Args: []Type{
|
||||
{ID: 78, 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: 78, Name: "syz_test$union0", CallName: "syz_test", Args: []Type{
|
||||
{ID: 79, 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: 79, Name: "syz_test$union1", CallName: "syz_test", Args: []Type{
|
||||
{ID: 80, 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: 80, Name: "syz_test$union2", CallName: "syz_test", Args: []Type{
|
||||
{ID: 81, 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: 81, Name: "syz_test$vma0", CallName: "syz_test", Args: []Type{
|
||||
{ID: 82, 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},
|
||||
@ -665,4 +685,4 @@ var consts_32 = []ConstValue{
|
||||
{Name: "ONLY_32BITS_CONST", Value: 1},
|
||||
}
|
||||
|
||||
const revision_32 = "b9cbeaf95275aebd2bf6f299b1071f67344453a5"
|
||||
const revision_32 = "bbf8d8ed4354030a23f6bde2600005f3f6c9bb91"
|
||||
|
@ -14,9 +14,26 @@ var resources_64 = []*ResourceDesc{
|
||||
}
|
||||
|
||||
var structDescs_64 = []*KeyedStruct{
|
||||
{Key: StructKey{Name: "len_nontemp4"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_nontemp4", TypeSize: 4}, Fields: []Type{
|
||||
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "f1", TypeSize: 4}}, Buf: "len_temp3"},
|
||||
}}},
|
||||
{Key: StructKey{Name: "len_nontemp5"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_nontemp5", TypeSize: 24}, Fields: []Type{
|
||||
&StructType{Key: StructKey{Name: "len_temp3[int8]"}, FldName: "f1"},
|
||||
&StructType{Key: StructKey{Name: "len_temp3[int64]"}, FldName: "f2"},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 4}}, IsPad: true},
|
||||
}}},
|
||||
{Key: StructKey{Name: "len_temp2[int16]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_temp2[int16]", TypeSize: 3}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "data", TypeSize: 2}}},
|
||||
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 1}}, Buf: "len_templ1[int8, int16]"},
|
||||
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 1}}, Buf: "len_templ1"},
|
||||
}}},
|
||||
{Key: StructKey{Name: "len_temp3[int64]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_temp3[int64]", TypeSize: 12}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f1", TypeSize: 8}}},
|
||||
&StructType{Key: StructKey{Name: "len_nontemp4"}, FldName: "f2"},
|
||||
}}},
|
||||
{Key: StructKey{Name: "len_temp3[int8]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_temp3[int8]", TypeSize: 8}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "f1", TypeSize: 1}}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 3}}, IsPad: true},
|
||||
&StructType{Key: StructKey{Name: "len_nontemp4"}, FldName: "f2"},
|
||||
}}},
|
||||
{Key: StructKey{Name: "len_templ1[int8, int16]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "len_templ1[int8, int16]", TypeSize: 6}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "data", TypeSize: 1}}},
|
||||
@ -563,91 +580,94 @@ var syscalls_64 = []*Syscall{
|
||||
{ID: 52, Name: "syz_test$length23", CallName: "syz_test", Args: []Type{
|
||||
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "len_templ1[int8, int16]"}}},
|
||||
}},
|
||||
{ID: 53, Name: "syz_test$length3", CallName: "syz_test", Args: []Type{
|
||||
{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{
|
||||
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a0", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "syz_length_len_struct"}}},
|
||||
}},
|
||||
{ID: 54, Name: "syz_test$length4", CallName: "syz_test", Args: []Type{
|
||||
{ID: 55, 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: 55, Name: "syz_test$length5", CallName: "syz_test", Args: []Type{
|
||||
{ID: 56, 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: 56, Name: "syz_test$length6", CallName: "syz_test", Args: []Type{
|
||||
{ID: 57, 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: 57, Name: "syz_test$length7", CallName: "syz_test", Args: []Type{
|
||||
{ID: 58, 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: 58, Name: "syz_test$length8", CallName: "syz_test", Args: []Type{
|
||||
{ID: 59, 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: 59, Name: "syz_test$length9", CallName: "syz_test", Args: []Type{
|
||||
{ID: 60, 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: 60, Name: "syz_test$missing_resource", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_missing_const_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
|
||||
{ID: 61, Name: "syz_test$opt0", CallName: "syz_test", Args: []Type{
|
||||
{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{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "a0", TypeSize: 8, IsOptional: true}}},
|
||||
}},
|
||||
{ID: 62, Name: "syz_test$opt1", CallName: "syz_test", Args: []Type{
|
||||
{ID: 63, 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: 63, Name: "syz_test$opt2", CallName: "syz_test", Args: []Type{
|
||||
{ID: 64, Name: "syz_test$opt2", CallName: "syz_test", Args: []Type{
|
||||
&VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "a0", TypeSize: 8, IsOptional: true}},
|
||||
}},
|
||||
{ID: 64, Name: "syz_test$opt3", CallName: "syz_test", Args: []Type{
|
||||
{ID: 65, 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: 65, Name: "syz_test$recur0", CallName: "syz_test", Args: []Type{
|
||||
{ID: 66, 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: 66, Name: "syz_test$recur1", CallName: "syz_test", Args: []Type{
|
||||
{ID: 67, 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: 67, Name: "syz_test$recur2", CallName: "syz_test", Args: []Type{
|
||||
{ID: 68, 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: 68, Name: "syz_test$regression0", CallName: "syz_test", Args: []Type{
|
||||
{ID: 69, 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: 69, Name: "syz_test$regression1", CallName: "syz_test", Args: []Type{
|
||||
{ID: 70, 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: 70, Name: "syz_test$regression2", CallName: "syz_test", Args: []Type{
|
||||
{ID: 71, 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: 71, Name: "syz_test$res0", CallName: "syz_test", Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
|
||||
{ID: 72, Name: "syz_test$res1", CallName: "syz_test", Args: []Type{
|
||||
{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{
|
||||
&ResourceType{TypeCommon: TypeCommon{TypeName: "syz_res", FldName: "a0", TypeSize: 4}},
|
||||
}},
|
||||
{ID: 73, Name: "syz_test$struct", CallName: "syz_test", Args: []Type{
|
||||
{ID: 74, 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: 74, Name: "syz_test$text_x86_16", CallName: "syz_test", Args: []Type{
|
||||
{ID: 75, 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: 75, Name: "syz_test$text_x86_32", CallName: "syz_test", Args: []Type{
|
||||
{ID: 76, 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: 76, Name: "syz_test$text_x86_64", CallName: "syz_test", Args: []Type{
|
||||
{ID: 77, 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: 77, Name: "syz_test$text_x86_real", CallName: "syz_test", Args: []Type{
|
||||
{ID: 78, 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: 78, Name: "syz_test$union0", CallName: "syz_test", Args: []Type{
|
||||
{ID: 79, 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: 79, Name: "syz_test$union1", CallName: "syz_test", Args: []Type{
|
||||
{ID: 80, 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: 80, Name: "syz_test$union2", CallName: "syz_test", Args: []Type{
|
||||
{ID: 81, 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: 81, Name: "syz_test$vma0", CallName: "syz_test", Args: []Type{
|
||||
{ID: 82, 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},
|
||||
@ -663,4 +683,4 @@ var consts_64 = []ConstValue{
|
||||
{Name: "IPPROTO_UDP", Value: 17},
|
||||
}
|
||||
|
||||
const revision_64 = "ed5cfa6417cbae5ddc998f597dcdbb96fea761c3"
|
||||
const revision_64 = "04defb49ad13778b83e2676461ef16d009d6128d"
|
||||
|
@ -350,6 +350,22 @@ type len_temp2[DATA] {
|
||||
|
||||
syz_test$length23(a ptr[in, len_templ1[int8, int16]])
|
||||
|
||||
type len_temp3[DATA] {
|
||||
f1 DATA
|
||||
f2 len_nontemp4
|
||||
}
|
||||
|
||||
len_nontemp4 {
|
||||
f1 len[len_temp3, int32]
|
||||
}
|
||||
|
||||
len_nontemp5 {
|
||||
f1 len_temp3[int8]
|
||||
f2 len_temp3[int64]
|
||||
}
|
||||
|
||||
syz_test$length24(a ptr[in, len_nontemp5])
|
||||
|
||||
# Big endian
|
||||
|
||||
syz_test$end0(a0 ptr[in, syz_end_int_struct])
|
||||
|
Loading…
x
Reference in New Issue
Block a user