diff options
| author | Andrey Konovalov <andreyknvl@google.com> | 2019-06-06 18:23:21 +0200 |
|---|---|---|
| committer | Andrey Konovalov <andreyknvl@gmail.com> | 2019-06-07 15:37:00 +0200 |
| commit | 58c4b1aeab3199918697f28a54d6811bd0fa9616 (patch) | |
| tree | 95a6fe728d65afa6da8bc02b166aa7d33e647e19 /sys/linux/init_vusb.go | |
| parent | ce9107d08661be9dfd81b6f69700eaac7f93b270 (diff) | |
sys/linux: use template based structure for USB descriptions
To allow future extensions of USB descriptions to fuzz particular USB
classes this patch changes the structure of USB descriptions to use
templates.
This will invalidate all existing USB corpus.
Diffstat (limited to 'sys/linux/init_vusb.go')
| -rw-r--r-- | sys/linux/init_vusb.go | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/sys/linux/init_vusb.go b/sys/linux/init_vusb.go index 94e055954..d388914a7 100644 --- a/sys/linux/init_vusb.go +++ b/sys/linux/init_vusb.go @@ -100,15 +100,16 @@ func (arch *arch) generateUsbDeviceDescriptor(g *prog.Gen, typ0 prog.Type, old p id.BInterfaceNumber = uint8(g.Rand().Intn(0xff + 1)) } - patchGroupArg(arg, 7, "idVendor", uint64(id.IDVendor)) - patchGroupArg(arg, 8, "idProduct", uint64(id.IDProduct)) - patchGroupArg(arg, 9, "bcdDevice", uint64(bcdDevice)) - patchGroupArg(arg, 3, "bDeviceClass", uint64(id.BDeviceClass)) - patchGroupArg(arg, 4, "bDeviceSubClass", uint64(id.BDeviceSubClass)) - patchGroupArg(arg, 5, "bDeviceProtocol", uint64(id.BDeviceProtocol)) - - configArg := arg.(*prog.GroupArg).Inner[14].(*prog.GroupArg).Inner[0] - interfaceArg := configArg.(*prog.GroupArg).Inner[8].(*prog.GroupArg).Inner[0] + devArg := arg.(*prog.GroupArg).Inner[0] + patchGroupArg(devArg, 7, "idVendor", uint64(id.IDVendor)) + patchGroupArg(devArg, 8, "idProduct", uint64(id.IDProduct)) + patchGroupArg(devArg, 9, "bcdDevice", uint64(bcdDevice)) + patchGroupArg(devArg, 3, "bDeviceClass", uint64(id.BDeviceClass)) + patchGroupArg(devArg, 4, "bDeviceSubClass", uint64(id.BDeviceSubClass)) + patchGroupArg(devArg, 5, "bDeviceProtocol", uint64(id.BDeviceProtocol)) + + configArg := devArg.(*prog.GroupArg).Inner[14].(*prog.GroupArg).Inner[0].(*prog.GroupArg).Inner[0] + interfaceArg := configArg.(*prog.GroupArg).Inner[8].(*prog.GroupArg).Inner[0].(*prog.GroupArg).Inner[0] patchGroupArg(interfaceArg, 5, "bInterfaceClass", uint64(id.BInterfaceClass)) patchGroupArg(interfaceArg, 6, "bInterfaceSubClass", uint64(id.BInterfaceSubClass)) |
