mirror of
https://github.com/reactos/syzkaller.git
synced 2025-01-31 17:12:52 +00:00
executor: fix handling of big-endian bitfields
Currently we apply big-endian-ness and bitfield-ness in the wrong order in copyin. This leads to totally bogus result. Fix this.
This commit is contained in:
parent
3350826625
commit
c791837863
@ -325,19 +325,10 @@ static int event_timedwait(event_t* ev, uint64 timeout)
|
||||
#endif
|
||||
|
||||
#if SYZ_EXECUTOR || SYZ_USE_BITMASKS
|
||||
#define BITMASK_LEN(type, bf_len) (type)((1ull << (bf_len)) - 1)
|
||||
|
||||
#define BITMASK_LEN_OFF(type, bf_off, bf_len) (type)(BITMASK_LEN(type, (bf_len)) << (bf_off))
|
||||
|
||||
#define STORE_BY_BITMASK(type, addr, val, bf_off, bf_len) \
|
||||
if ((bf_off) == 0 && (bf_len) == 0) { \
|
||||
*(type*)(addr) = (type)(val); \
|
||||
} else { \
|
||||
type new_val = *(type*)(addr); \
|
||||
new_val &= ~BITMASK_LEN_OFF(type, (bf_off), (bf_len)); \
|
||||
new_val |= ((type)(val)&BITMASK_LEN(type, (bf_len))) << (bf_off); \
|
||||
*(type*)(addr) = new_val; \
|
||||
}
|
||||
#define BITMASK(bf_off, bf_len) (((1ull << (bf_len)) - 1) << (bf_off))
|
||||
#define STORE_BY_BITMASK(type, htobe, addr, val, bf_off, bf_len) \
|
||||
*(type*)(addr) = htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | \
|
||||
(((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len))))
|
||||
#endif
|
||||
|
||||
#if SYZ_EXECUTOR || SYZ_USE_CHECKSUMS
|
||||
|
@ -40,7 +40,10 @@ static long syz_compare(long want, long want_len, long got, long got_len)
|
||||
return -1;
|
||||
}
|
||||
if (memcmp((void*)want, (void*)got, want_len)) {
|
||||
debug("syz_compare: data differs\n");
|
||||
debug("syz_compare: data differs, want:\n");
|
||||
debug_dump_data((char*)want, want_len);
|
||||
debug("got:\n");
|
||||
debug_dump_data((char*)got, got_len);
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
@ -145,7 +145,7 @@
|
||||
|
||||
#if GOARCH_32_fork_shmem
|
||||
#define GOARCH "32_fork_shmem"
|
||||
#define SYZ_REVISION "4225c1e93671306efa6a41958a6d553aed7e8cf7"
|
||||
#define SYZ_REVISION "f0257b726ddd3b09086a9525a4aae0e0d8cfa6af"
|
||||
#define SYZ_EXECUTOR_USES_FORK_SERVER 1
|
||||
#define SYZ_EXECUTOR_USES_SHMEM 1
|
||||
#define SYZ_PAGE_SIZE 4096
|
||||
@ -155,7 +155,7 @@
|
||||
|
||||
#if GOARCH_32_shmem
|
||||
#define GOARCH "32_shmem"
|
||||
#define SYZ_REVISION "ae161a1d8e44b101412b6f8d8fdde3a6ce553e55"
|
||||
#define SYZ_REVISION "136d60e9280b55ca8a1f24fed877e2f0ae72e348"
|
||||
#define SYZ_EXECUTOR_USES_FORK_SERVER 0
|
||||
#define SYZ_EXECUTOR_USES_SHMEM 1
|
||||
#define SYZ_PAGE_SIZE 8192
|
||||
@ -165,7 +165,7 @@
|
||||
|
||||
#if GOARCH_64
|
||||
#define GOARCH "64"
|
||||
#define SYZ_REVISION "6ffded136a7c445ee912402759cc9f71c3add37a"
|
||||
#define SYZ_REVISION "82736d421a5d52db6df0775561f1e59cc6cb9014"
|
||||
#define SYZ_EXECUTOR_USES_FORK_SERVER 0
|
||||
#define SYZ_EXECUTOR_USES_SHMEM 0
|
||||
#define SYZ_PAGE_SIZE 4096
|
||||
@ -175,7 +175,7 @@
|
||||
|
||||
#if GOARCH_64_fork
|
||||
#define GOARCH "64_fork"
|
||||
#define SYZ_REVISION "ef850b63cd75f943301e586db069812cc63ac259"
|
||||
#define SYZ_REVISION "0c64cdd471dfa62b3e34ed221afe8472c9125d38"
|
||||
#define SYZ_EXECUTOR_USES_FORK_SERVER 1
|
||||
#define SYZ_EXECUTOR_USES_SHMEM 0
|
||||
#define SYZ_PAGE_SIZE 8192
|
||||
|
@ -295,6 +295,7 @@ static uint64 read_input(uint64** input_posp, bool peek = false);
|
||||
static uint64 read_arg(uint64** input_posp);
|
||||
static uint64 read_const_arg(uint64** input_posp, uint64* size_p, uint64* bf, uint64* bf_off_p, uint64* bf_len_p);
|
||||
static uint64 read_result(uint64** input_posp);
|
||||
static uint64 swap(uint64 v, uint64 size, uint64 bf);
|
||||
static void copyin(char* addr, uint64 val, uint64 size, uint64 bf, uint64 bf_off, uint64 bf_len);
|
||||
static bool copyout(char* addr, uint64 size, uint64* res);
|
||||
static void setup_control_pipes();
|
||||
@ -1026,24 +1027,37 @@ static bool dedup(uint32 sig)
|
||||
}
|
||||
#endif
|
||||
|
||||
template <typename T>
|
||||
void copyin_int(char* addr, uint64 val, uint64 bf, uint64 bf_off, uint64 bf_len)
|
||||
{
|
||||
if (bf_off == 0 && bf_len == 0) {
|
||||
*(T*)addr = swap(val, sizeof(T), bf);
|
||||
return;
|
||||
}
|
||||
T x = swap(*(T*)addr, sizeof(T), bf);
|
||||
x = (x & ~BITMASK(bf_off, bf_len)) | ((val << bf_off) & BITMASK(bf_off, bf_len));
|
||||
*(T*)addr = swap(x, sizeof(T), bf);
|
||||
}
|
||||
|
||||
void copyin(char* addr, uint64 val, uint64 size, uint64 bf, uint64 bf_off, uint64 bf_len)
|
||||
{
|
||||
if (bf != binary_format_native && (bf_off != 0 || bf_len != 0))
|
||||
if (bf != binary_format_native && bf != binary_format_bigendian && (bf_off != 0 || bf_len != 0))
|
||||
fail("bitmask for string format %llu/%llu", bf_off, bf_len);
|
||||
switch (bf) {
|
||||
case binary_format_native:
|
||||
case binary_format_bigendian:
|
||||
NONFAILING(switch (size) {
|
||||
case 1:
|
||||
STORE_BY_BITMASK(uint8, addr, val, bf_off, bf_len);
|
||||
copyin_int<uint8>(addr, val, bf, bf_off, bf_len);
|
||||
break;
|
||||
case 2:
|
||||
STORE_BY_BITMASK(uint16, addr, val, bf_off, bf_len);
|
||||
copyin_int<uint16>(addr, val, bf, bf_off, bf_len);
|
||||
break;
|
||||
case 4:
|
||||
STORE_BY_BITMASK(uint32, addr, val, bf_off, bf_len);
|
||||
copyin_int<uint32>(addr, val, bf, bf_off, bf_len);
|
||||
break;
|
||||
case 8:
|
||||
STORE_BY_BITMASK(uint64, addr, val, bf_off, bf_len);
|
||||
copyin_int<uint64>(addr, val, bf, bf_off, bf_len);
|
||||
break;
|
||||
default:
|
||||
fail("copyin: bad argument size %llu", size);
|
||||
@ -1099,11 +1113,11 @@ uint64 read_arg(uint64** input_posp)
|
||||
case arg_const: {
|
||||
uint64 size, bf, bf_off, bf_len;
|
||||
uint64 val = read_const_arg(input_posp, &size, &bf, &bf_off, &bf_len);
|
||||
if (bf != binary_format_native)
|
||||
if (bf != binary_format_native && bf != binary_format_bigendian)
|
||||
fail("bad argument binary format %llu", bf);
|
||||
if (bf_off != 0 || bf_len != 0)
|
||||
fail("bad argument bitfield %llu/%llu", bf_off, bf_len);
|
||||
return val;
|
||||
return swap(val, size, bf);
|
||||
}
|
||||
case arg_result: {
|
||||
uint64 meta = read_input(input_posp);
|
||||
@ -1117,6 +1131,24 @@ uint64 read_arg(uint64** input_posp)
|
||||
}
|
||||
}
|
||||
|
||||
uint64 swap(uint64 v, uint64 size, uint64 bf)
|
||||
{
|
||||
if (bf == binary_format_native)
|
||||
return v;
|
||||
if (bf != binary_format_bigendian)
|
||||
fail("bad binary format in swap: %llu", bf);
|
||||
switch (size) {
|
||||
case 2:
|
||||
return htobe16(v);
|
||||
case 4:
|
||||
return htobe32(v);
|
||||
case 8:
|
||||
return htobe64(v);
|
||||
default:
|
||||
fail("bad big-endian int size %llu", size);
|
||||
}
|
||||
}
|
||||
|
||||
uint64 read_const_arg(uint64** input_posp, uint64* size_p, uint64* bf_p, uint64* bf_off_p, uint64* bf_len_p)
|
||||
{
|
||||
uint64 meta = read_input(input_posp);
|
||||
@ -1127,22 +1159,6 @@ uint64 read_const_arg(uint64** input_posp, uint64* size_p, uint64* bf_p, uint64*
|
||||
*bf_len_p = (meta >> 24) & 0xff;
|
||||
uint64 pid_stride = meta >> 32;
|
||||
val += pid_stride * procid;
|
||||
if (bf == binary_format_bigendian) {
|
||||
bf = binary_format_native;
|
||||
switch (*size_p) {
|
||||
case 2:
|
||||
val = htobe16(val);
|
||||
break;
|
||||
case 4:
|
||||
val = htobe32(val);
|
||||
break;
|
||||
case 8:
|
||||
val = htobe64(val);
|
||||
break;
|
||||
default:
|
||||
fail("bad big-endian int size %llu", *size_p);
|
||||
}
|
||||
}
|
||||
*bf_p = bf;
|
||||
return val;
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
static int test_copyin()
|
||||
{
|
||||
static uint16 buf[3];
|
||||
STORE_BY_BITMASK(uint16, &buf[1], 0x1234, 0, 0);
|
||||
STORE_BY_BITMASK(uint16, , &buf[1], 0x1234, 0, 16);
|
||||
unsigned char x[sizeof(buf)];
|
||||
memcpy(x, buf, sizeof(x));
|
||||
if (x[0] != 0 || x[1] != 0 ||
|
||||
@ -18,7 +18,7 @@ static int test_copyin()
|
||||
x[0], x[1], x[2], x[3], x[4], x[5]);
|
||||
return 1;
|
||||
}
|
||||
STORE_BY_BITMASK(uint16, &buf[1], 0x555a, 5, 4);
|
||||
STORE_BY_BITMASK(uint16, , &buf[1], 0x555a, 5, 4);
|
||||
memcpy(x, buf, sizeof(x));
|
||||
if (x[0] != 0 || x[1] != 0 ||
|
||||
x[2] != 0x54 || x[3] != 0x13 ||
|
||||
|
@ -751,7 +751,8 @@ func (comp *compiler) checkTypeBasic(t *ast.Type, desc *typeDesc, flags checkFla
|
||||
comp.error(t.Pos, "%v can't be type alias target", t.Ident)
|
||||
return
|
||||
}
|
||||
if flags&checkIsResourceBase != 0 && !desc.ResourceBase {
|
||||
if flags&checkIsResourceBase != 0 &&
|
||||
(desc.CanBeResourceBase == nil || !desc.CanBeResourceBase(comp, t)) {
|
||||
comp.error(t.Pos, "%v can't be resource base (int types can)", t.Ident)
|
||||
return
|
||||
}
|
||||
|
1
pkg/compiler/testdata/errors.txt
vendored
1
pkg/compiler/testdata/errors.txt
vendored
@ -65,6 +65,7 @@ resource r2[r0]: 2
|
||||
resource r3[int32:1] ### unexpected ':', only struct fields can be bitfields
|
||||
resource r4[int32[opt]] ### resource base can't be marked as opt
|
||||
resource r5[non_existent] ### unknown type non_existent
|
||||
resource r6[int64be] ### int64be can't be resource base (int types can)
|
||||
resource r9["foo"] ### unexpected string "foo", expect type
|
||||
|
||||
foo$7(a r0, a1 r2[opt])
|
||||
|
@ -18,11 +18,12 @@ type typeDesc struct {
|
||||
CantBeOpt bool // can't be marked as opt?
|
||||
NeedBase bool // needs base type when used as field?
|
||||
AllowColon bool // allow colon (int8:2) on fields?
|
||||
ResourceBase bool // can be resource base type?
|
||||
OptArgs int // number of optional arguments in Args array
|
||||
Args []namedArg // type arguments
|
||||
// CanBeArgRet returns if this type can be syscall argument/return (false if nil).
|
||||
CanBeArgRet func(comp *compiler, t *ast.Type) (bool, bool)
|
||||
// CanBeResourceBase returns if this type can be a resource base type (false if nil.
|
||||
CanBeResourceBase func(comp *compiler, t *ast.Type) bool
|
||||
// Check does custom verification of the type (optional, consts are not patched yet).
|
||||
Check func(comp *compiler, t *ast.Type, args []*ast.Type, base prog.IntTypeCommon)
|
||||
// CheckConsts does custom verification of the type (optional, consts are patched).
|
||||
@ -67,9 +68,16 @@ var typeInt = &typeDesc{
|
||||
CanBeArgRet: canBeArg,
|
||||
CanBeTypedef: true,
|
||||
AllowColon: true,
|
||||
ResourceBase: true,
|
||||
OptArgs: 1,
|
||||
Args: []namedArg{{Name: "range", Type: typeArgIntRange}},
|
||||
CanBeResourceBase: func(comp *compiler, t *ast.Type) bool {
|
||||
// Big-endian resources can always be converted to non-big-endian,
|
||||
// since we will always revert bytes during copyout and during copyin,
|
||||
// so the result is the same as not reverting at all.
|
||||
// Big-endian resources are also not implemented and don't have tests.
|
||||
_, be := comp.parseIntType(t.Ident)
|
||||
return !be
|
||||
},
|
||||
Check: func(comp *compiler, t *ast.Type, args []*ast.Type, base prog.IntTypeCommon) {
|
||||
typeArgBase.Type.Check(comp, t)
|
||||
},
|
||||
@ -653,8 +661,10 @@ var typeArgType = &typeArg{}
|
||||
|
||||
var typeResource = &typeDesc{
|
||||
// No Names, but getTypeDesc knows how to match it.
|
||||
CanBeArgRet: canBeArgRet,
|
||||
ResourceBase: true,
|
||||
CanBeArgRet: canBeArgRet,
|
||||
CanBeResourceBase: func(comp *compiler, t *ast.Type) bool {
|
||||
return true
|
||||
},
|
||||
// Gen is assigned below to avoid initialization loop.
|
||||
}
|
||||
|
||||
|
@ -229,7 +229,7 @@ func (ctx *context) emitCall(w *bytes.Buffer, call prog.ExecCall, ci int, haveCo
|
||||
if arg.Format != prog.FormatNative && arg.Format != prog.FormatBigEndian {
|
||||
panic("sring format in syscall argument")
|
||||
}
|
||||
fmt.Fprintf(w, "%v", ctx.constArgToStr(arg))
|
||||
fmt.Fprintf(w, "%v", ctx.constArgToStr(arg, true))
|
||||
case prog.ExecArgResult:
|
||||
if arg.Format != prog.FormatNative && arg.Format != prog.FormatBigEndian {
|
||||
panic("sring format in syscall argument")
|
||||
@ -282,13 +282,17 @@ func (ctx *context) copyin(w *bytes.Buffer, csumSeq *int, copyin prog.ExecCopyin
|
||||
switch arg := copyin.Arg.(type) {
|
||||
case prog.ExecArgConst:
|
||||
if arg.BitfieldOffset == 0 && arg.BitfieldLength == 0 {
|
||||
ctx.copyinVal(w, copyin.Addr, arg.Size, ctx.constArgToStr(arg), arg.Format)
|
||||
ctx.copyinVal(w, copyin.Addr, arg.Size, ctx.constArgToStr(arg, true), arg.Format)
|
||||
} else {
|
||||
if arg.Format != prog.FormatNative && arg.Format != prog.FormatBigEndian {
|
||||
panic("bitfield+string format")
|
||||
}
|
||||
fmt.Fprintf(w, "\tNONFAILING(STORE_BY_BITMASK(uint%v, 0x%x, %v, %v, %v));\n",
|
||||
arg.Size*8, copyin.Addr, ctx.constArgToStr(arg),
|
||||
htobe := ""
|
||||
if arg.Format == prog.FormatBigEndian {
|
||||
htobe = fmt.Sprintf("htobe%v", arg.Size*8)
|
||||
}
|
||||
fmt.Fprintf(w, "\tNONFAILING(STORE_BY_BITMASK(uint%v, %v, 0x%x, %v, %v, %v));\n",
|
||||
arg.Size*8, htobe, copyin.Addr, ctx.constArgToStr(arg, false),
|
||||
arg.BitfieldOffset, arg.BitfieldLength)
|
||||
}
|
||||
case prog.ExecArgResult:
|
||||
@ -363,7 +367,7 @@ func (ctx *context) copyout(w *bytes.Buffer, call prog.ExecCall, resCopyout bool
|
||||
}
|
||||
}
|
||||
|
||||
func (ctx *context) constArgToStr(arg prog.ExecArgConst) string {
|
||||
func (ctx *context) constArgToStr(arg prog.ExecArgConst, handleBigEndian bool) string {
|
||||
mask := (uint64(1) << (arg.Size * 8)) - 1
|
||||
v := arg.Value & mask
|
||||
val := fmt.Sprintf("%v", v)
|
||||
@ -375,7 +379,7 @@ func (ctx *context) constArgToStr(arg prog.ExecArgConst) string {
|
||||
if ctx.opts.Procs > 1 && arg.PidStride != 0 {
|
||||
val += fmt.Sprintf(" + procid*%v", arg.PidStride)
|
||||
}
|
||||
if arg.Format == prog.FormatBigEndian {
|
||||
if handleBigEndian && arg.Format == prog.FormatBigEndian {
|
||||
val = fmt.Sprintf("htobe%v(%v)", arg.Size*8, val)
|
||||
}
|
||||
return val
|
||||
|
@ -310,19 +310,10 @@ static int event_timedwait(event_t* ev, uint64 timeout)
|
||||
#endif
|
||||
|
||||
#if SYZ_EXECUTOR || SYZ_USE_BITMASKS
|
||||
#define BITMASK_LEN(type, bf_len) (type)((1ull << (bf_len)) - 1)
|
||||
|
||||
#define BITMASK_LEN_OFF(type, bf_off, bf_len) (type)(BITMASK_LEN(type, (bf_len)) << (bf_off))
|
||||
|
||||
#define STORE_BY_BITMASK(type, addr, val, bf_off, bf_len) \
|
||||
if ((bf_off) == 0 && (bf_len) == 0) { \
|
||||
*(type*)(addr) = (type)(val); \
|
||||
} else { \
|
||||
type new_val = *(type*)(addr); \
|
||||
new_val &= ~BITMASK_LEN_OFF(type, (bf_off), (bf_len)); \
|
||||
new_val |= ((type)(val)&BITMASK_LEN(type, (bf_len))) << (bf_off); \
|
||||
*(type*)(addr) = new_val; \
|
||||
}
|
||||
#define BITMASK(bf_off, bf_len) (((1ull << (bf_len)) - 1) << (bf_off))
|
||||
#define STORE_BY_BITMASK(type, htobe, addr, val, bf_off, bf_len) \
|
||||
*(type*)(addr) = htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | \
|
||||
(((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len))))
|
||||
#endif
|
||||
|
||||
#if SYZ_EXECUTOR || SYZ_USE_CHECKSUMS
|
||||
@ -3945,7 +3936,10 @@ static long syz_compare(long want, long want_len, long got, long got_len)
|
||||
return -1;
|
||||
}
|
||||
if (memcmp((void*)want, (void*)got, want_len)) {
|
||||
debug("syz_compare: data differs\n");
|
||||
debug("syz_compare: data differs, want:\n");
|
||||
debug_dump_data((char*)want, want_len);
|
||||
debug("got:\n");
|
||||
debug_dump_data((char*)got, got_len);
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
@ -4106,7 +4100,10 @@ static long syz_compare(long want, long want_len, long got, long got_len)
|
||||
return -1;
|
||||
}
|
||||
if (memcmp((void*)want, (void*)got, want_len)) {
|
||||
debug("syz_compare: data differs\n");
|
||||
debug("syz_compare: data differs, want:\n");
|
||||
debug_dump_data((char*)want, want_len);
|
||||
debug("got:\n");
|
||||
debug_dump_data((char*)got, got_len);
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
@ -7,6 +7,10 @@ syz_compare(want ptr[in, string], want_len len[want], got ptr[in, compare_data],
|
||||
|
||||
compare_data [
|
||||
align0 align0
|
||||
bf0 syz_bf_struct0
|
||||
bf1 syz_bf_struct1
|
||||
bf2 syz_bf_struct2
|
||||
bf3 syz_bf_struct3
|
||||
] [varlen]
|
||||
|
||||
align0 {
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Copyright 2018 syzkaller project authors. All rights reserved.
|
||||
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
|
||||
|
||||
resource r_any[int32be]
|
||||
resource r_any[int32]
|
||||
|
||||
foo$fmt0(a ptr[in, fmt[dec, int32[1:10]]]) r_any
|
||||
foo$fmt1(a ptr[in, fmt[hex, flags[flags_any]]])
|
||||
|
@ -25,6 +25,47 @@ var structDescs_32_fork_shmem = []*KeyedStruct{
|
||||
}}},
|
||||
{Key: StructKey{Name: "compare_data"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "compare_data", IsVarlen: true}, Fields: []Type{
|
||||
&StructType{Key: StructKey{Name: "align0"}, FldName: "align0"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct0"}, FldName: "bf0"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct1"}, FldName: "bf1"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct2"}, FldName: "bf2"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct3"}, FldName: "bf3"},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct0"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct0", TypeSize: 32}, Fields: []Type{
|
||||
&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "syz_bf_flags", FldName: "f0", TypeSize: 2}, BitfieldLen: 10}, Vals: []uint64{0, 1, 2}, BitMask: true},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 6}}, IsPad: true},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f1", TypeSize: 8}}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "f2", TypeSize: 2}, BitfieldLen: 5, BitfieldMdl: true}, Val: 66},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "f3", TypeSize: 2}, BitfieldOff: 5, BitfieldLen: 6}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 2}}, IsPad: true},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "f4", TypeSize: 4}, BitfieldLen: 15}, Val: 66},
|
||||
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "f5", TypeSize: 2}, BitfieldLen: 11}, Buf: "parent"},
|
||||
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "f6", TypeSize: 2}, ArgFormat: 1, BitfieldLen: 11}, Buf: "parent"},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "f7", TypeSize: 1}}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 3}}, IsPad: true},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct1"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct1", TypeSize: 8}, Fields: []Type{
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct1_internal"}, FldName: "f0"},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "f1", TypeSize: 1}}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 3}}, IsPad: true},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct1_internal"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct1_internal", TypeSize: 4}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "f0", TypeSize: 4}, BitfieldLen: 10, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "f1", TypeSize: 4}, BitfieldOff: 10, BitfieldLen: 10, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "f2", TypeSize: 4}, BitfieldOff: 20, BitfieldLen: 10}},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct2"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct2", TypeSize: 8}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f0", TypeSize: 8}, BitfieldLen: 4, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f1", TypeSize: 8}, BitfieldOff: 4, BitfieldLen: 8, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f2", TypeSize: 8}, BitfieldOff: 12, BitfieldLen: 12, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f3", TypeSize: 8}, BitfieldOff: 24, BitfieldLen: 20, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f4", TypeSize: 8}, BitfieldOff: 44, BitfieldLen: 16}},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct3"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct3", TypeSize: 8}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f0", TypeSize: 8}, ArgFormat: 1, BitfieldLen: 4, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f1", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 4, BitfieldLen: 8, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f2", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 12, BitfieldLen: 12, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f3", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 24, BitfieldLen: 20, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f4", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 44, BitfieldLen: 16}},
|
||||
}}},
|
||||
}
|
||||
|
||||
@ -54,4 +95,4 @@ var consts_32_fork_shmem = []ConstValue{
|
||||
{Name: "ONLY_32BITS_CONST", Value: 1},
|
||||
}
|
||||
|
||||
const revision_32_fork_shmem = "4225c1e93671306efa6a41958a6d553aed7e8cf7"
|
||||
const revision_32_fork_shmem = "f0257b726ddd3b09086a9525a4aae0e0d8cfa6af"
|
||||
|
@ -25,6 +25,47 @@ var structDescs_32_shmem = []*KeyedStruct{
|
||||
}}},
|
||||
{Key: StructKey{Name: "compare_data"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "compare_data", IsVarlen: true}, Fields: []Type{
|
||||
&StructType{Key: StructKey{Name: "align0"}, FldName: "align0"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct0"}, FldName: "bf0"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct1"}, FldName: "bf1"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct2"}, FldName: "bf2"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct3"}, FldName: "bf3"},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct0"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct0", TypeSize: 32}, Fields: []Type{
|
||||
&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "syz_bf_flags", FldName: "f0", TypeSize: 2}, BitfieldLen: 10}, Vals: []uint64{0, 1, 2}, BitMask: true},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 6}}, IsPad: true},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f1", TypeSize: 8}}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "f2", TypeSize: 2}, BitfieldLen: 5, BitfieldMdl: true}, Val: 66},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "f3", TypeSize: 2}, BitfieldOff: 5, BitfieldLen: 6}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 2}}, IsPad: true},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "f4", TypeSize: 4}, BitfieldLen: 15}, Val: 66},
|
||||
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "f5", TypeSize: 2}, BitfieldLen: 11}, Buf: "parent"},
|
||||
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "f6", TypeSize: 2}, ArgFormat: 1, BitfieldLen: 11}, Buf: "parent"},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "f7", TypeSize: 1}}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 3}}, IsPad: true},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct1"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct1", TypeSize: 8}, Fields: []Type{
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct1_internal"}, FldName: "f0"},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "f1", TypeSize: 1}}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 3}}, IsPad: true},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct1_internal"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct1_internal", TypeSize: 4}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "f0", TypeSize: 4}, BitfieldLen: 10, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "f1", TypeSize: 4}, BitfieldOff: 10, BitfieldLen: 10, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "f2", TypeSize: 4}, BitfieldOff: 20, BitfieldLen: 10}},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct2"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct2", TypeSize: 8}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f0", TypeSize: 8}, BitfieldLen: 4, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f1", TypeSize: 8}, BitfieldOff: 4, BitfieldLen: 8, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f2", TypeSize: 8}, BitfieldOff: 12, BitfieldLen: 12, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f3", TypeSize: 8}, BitfieldOff: 24, BitfieldLen: 20, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f4", TypeSize: 8}, BitfieldOff: 44, BitfieldLen: 16}},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct3"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct3", TypeSize: 8}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f0", TypeSize: 8}, ArgFormat: 1, BitfieldLen: 4, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f1", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 4, BitfieldLen: 8, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f2", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 12, BitfieldLen: 12, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f3", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 24, BitfieldLen: 20, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f4", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 44, BitfieldLen: 16}},
|
||||
}}},
|
||||
}
|
||||
|
||||
@ -54,4 +95,4 @@ var consts_32_shmem = []ConstValue{
|
||||
{Name: "ONLY_32BITS_CONST", Value: 1},
|
||||
}
|
||||
|
||||
const revision_32_shmem = "ae161a1d8e44b101412b6f8d8fdde3a6ce553e55"
|
||||
const revision_32_shmem = "136d60e9280b55ca8a1f24fed877e2f0ae72e348"
|
||||
|
@ -14,7 +14,7 @@ var resources_64 = []*ResourceDesc{
|
||||
{Name: "anyres32", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: []string{"anyres32"}, Values: []uint64{0}},
|
||||
{Name: "anyres64", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", TypeSize: 8}}}, Kind: []string{"anyres64"}, Values: []uint64{0}},
|
||||
{Name: "fd", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: []string{"fd"}, Values: []uint64{18446744073709551615, 999}},
|
||||
{Name: "r_any", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", TypeSize: 4}, ArgFormat: 1}}, Kind: []string{"r_any"}, Values: []uint64{0}},
|
||||
{Name: "r_any", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: []string{"r_any"}, Values: []uint64{0}},
|
||||
{Name: "syz_missing_const_res", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: []string{"syz_missing_const_res"}, Values: []uint64{0}},
|
||||
{Name: "syz_res", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: []string{"syz_res"}, Values: []uint64{65535}},
|
||||
{Name: "unsupported", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: []string{"unsupported"}, Values: []uint64{0}},
|
||||
@ -67,6 +67,10 @@ var structDescs_64 = []*KeyedStruct{
|
||||
}}},
|
||||
{Key: StructKey{Name: "compare_data"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "compare_data", IsVarlen: true}, Fields: []Type{
|
||||
&StructType{Key: StructKey{Name: "align0"}, FldName: "align0"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct0"}, FldName: "bf0"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct1"}, FldName: "bf1"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct2"}, FldName: "bf2"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct3"}, FldName: "bf3"},
|
||||
}}},
|
||||
{Key: StructKey{Name: "excessive_fields"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "excessive_fields", TypeSize: 1}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "f1", TypeSize: 1}}},
|
||||
@ -245,6 +249,20 @@ var structDescs_64 = []*KeyedStruct{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "f1", TypeSize: 4}, BitfieldOff: 10, BitfieldLen: 10, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "f2", TypeSize: 4}, BitfieldOff: 20, BitfieldLen: 10}},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct2"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct2", TypeSize: 8}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f0", TypeSize: 8}, BitfieldLen: 4, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f1", TypeSize: 8}, BitfieldOff: 4, BitfieldLen: 8, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f2", TypeSize: 8}, BitfieldOff: 12, BitfieldLen: 12, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f3", TypeSize: 8}, BitfieldOff: 24, BitfieldLen: 20, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f4", TypeSize: 8}, BitfieldOff: 44, BitfieldLen: 16}},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct3"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct3", TypeSize: 8}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f0", TypeSize: 8}, ArgFormat: 1, BitfieldLen: 4, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f1", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 4, BitfieldLen: 8, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f2", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 12, BitfieldLen: 12, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f3", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 24, BitfieldLen: 20, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f4", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 44, BitfieldLen: 16}},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_csum_encode"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_csum_encode", IsVarlen: true}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "f0", TypeSize: 2}}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "f1", TypeSize: 2}, ArgFormat: 1}},
|
||||
@ -540,7 +558,7 @@ var syscalls_64 = []*Syscall{
|
||||
}},
|
||||
{Name: "foo$fmt0", CallName: "foo", Args: []Type{
|
||||
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a", TypeSize: 8}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 20}, ArgFormat: 2}, Kind: 2, RangeBegin: 1, RangeEnd: 10}},
|
||||
}, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "r_any", FldName: "ret", TypeSize: 4, ArgDir: 1}, ArgFormat: 1}},
|
||||
}, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "r_any", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
|
||||
{Name: "foo$fmt1", CallName: "foo", Args: []Type{
|
||||
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "a", TypeSize: 8}, Type: &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "flags_any", TypeSize: 18}, ArgFormat: 3}, Vals: []uint64{0, 1, 2}, BitMask: true}},
|
||||
}},
|
||||
@ -911,4 +929,4 @@ var consts_64 = []ConstValue{
|
||||
{Name: "SYS_unsupported"},
|
||||
}
|
||||
|
||||
const revision_64 = "6ffded136a7c445ee912402759cc9f71c3add37a"
|
||||
const revision_64 = "82736d421a5d52db6df0775561f1e59cc6cb9014"
|
||||
|
@ -25,6 +25,47 @@ var structDescs_64_fork = []*KeyedStruct{
|
||||
}}},
|
||||
{Key: StructKey{Name: "compare_data"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "compare_data", IsVarlen: true}, Fields: []Type{
|
||||
&StructType{Key: StructKey{Name: "align0"}, FldName: "align0"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct0"}, FldName: "bf0"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct1"}, FldName: "bf1"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct2"}, FldName: "bf2"},
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct3"}, FldName: "bf3"},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct0"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct0", TypeSize: 32}, Fields: []Type{
|
||||
&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "syz_bf_flags", FldName: "f0", TypeSize: 2}, BitfieldLen: 10}, Vals: []uint64{0, 1, 2}, BitMask: true},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 6}}, IsPad: true},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f1", TypeSize: 8}}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "f2", TypeSize: 2}, BitfieldLen: 5, BitfieldMdl: true}, Val: 66},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "f3", TypeSize: 2}, BitfieldOff: 5, BitfieldLen: 6}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 2}}, IsPad: true},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "f4", TypeSize: 4}, BitfieldLen: 15}, Val: 66},
|
||||
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "f5", TypeSize: 2}, BitfieldLen: 11}, Buf: "parent"},
|
||||
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "f6", TypeSize: 2}, ArgFormat: 1, BitfieldLen: 11}, Buf: "parent"},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "f7", TypeSize: 1}}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 3}}, IsPad: true},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct1"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct1", TypeSize: 8}, Fields: []Type{
|
||||
&StructType{Key: StructKey{Name: "syz_bf_struct1_internal"}, FldName: "f0"},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "f1", TypeSize: 1}}},
|
||||
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 3}}, IsPad: true},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct1_internal"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct1_internal", TypeSize: 4}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "f0", TypeSize: 4}, BitfieldLen: 10, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "f1", TypeSize: 4}, BitfieldOff: 10, BitfieldLen: 10, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "f2", TypeSize: 4}, BitfieldOff: 20, BitfieldLen: 10}},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct2"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct2", TypeSize: 8}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f0", TypeSize: 8}, BitfieldLen: 4, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f1", TypeSize: 8}, BitfieldOff: 4, BitfieldLen: 8, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f2", TypeSize: 8}, BitfieldOff: 12, BitfieldLen: 12, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f3", TypeSize: 8}, BitfieldOff: 24, BitfieldLen: 20, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "f4", TypeSize: 8}, BitfieldOff: 44, BitfieldLen: 16}},
|
||||
}}},
|
||||
{Key: StructKey{Name: "syz_bf_struct3"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "syz_bf_struct3", TypeSize: 8}, Fields: []Type{
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f0", TypeSize: 8}, ArgFormat: 1, BitfieldLen: 4, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f1", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 4, BitfieldLen: 8, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f2", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 12, BitfieldLen: 12, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f3", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 24, BitfieldLen: 20, BitfieldMdl: true}},
|
||||
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "f4", TypeSize: 8}, ArgFormat: 1, BitfieldOff: 44, BitfieldLen: 16}},
|
||||
}}},
|
||||
}
|
||||
|
||||
@ -53,4 +94,4 @@ var consts_64_fork = []ConstValue{
|
||||
{Name: "IPPROTO_UDP", Value: 17},
|
||||
}
|
||||
|
||||
const revision_64_fork = "ef850b63cd75f943301e586db069812cc63ac259"
|
||||
const revision_64_fork = "0c64cdd471dfa62b3e34ed221afe8472c9125d38"
|
||||
|
@ -511,6 +511,22 @@ syz_bf_struct1 {
|
||||
f1 int8
|
||||
}
|
||||
|
||||
syz_bf_struct2 {
|
||||
f0 int64:4
|
||||
f1 int64:8
|
||||
f2 int64:12
|
||||
f3 int64:20
|
||||
f4 int64:16
|
||||
}
|
||||
|
||||
syz_bf_struct3 {
|
||||
f0 int64be:4
|
||||
f1 int64be:8
|
||||
f2 int64be:12
|
||||
f3 int64be:20
|
||||
f4 int64be:16
|
||||
}
|
||||
|
||||
test$bf0(a0 ptr[in, syz_bf_struct0])
|
||||
test$bf1(a0 ptr[in, syz_bf_struct1])
|
||||
|
||||
|
5
sys/test/test/bf
Normal file
5
sys/test/test/bf
Normal file
@ -0,0 +1,5 @@
|
||||
syz_compare(&(0x7f0000000000)="ab03000000000000cdcdcdcdcdcdcdcdeb070000ff7f0000ab0303abaa000000", 0x20, &(0x7f0000001000)=@bf0={0xabab, 0xcdcdcdcdcdcdcdcd, 0xabab, 0xffff, 0xffffff, 0xabab, 0xabab, 0xaaa}, 0x20)
|
||||
|
||||
syz_compare(&(0x7f0000002000)="dcfcde563422f10e", 0x8, &(0x7f0000003000)=@bf2={0x0abc, 0x0bcd, 0xcdef, 0x123456, 0x78ef12}, 0x8)
|
||||
|
||||
syz_compare(&(0x7f0000004000)="0ef1223456defcdc", 0x8, &(0x7f0000005000)=@bf3={0x0abc, 0x0bcd, 0xcdef, 0x123456, 0x78ef12}, 0x8)
|
Loading…
x
Reference in New Issue
Block a user