From 58c4b1aeab3199918697f28a54d6811bd0fa9616 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Thu, 6 Jun 2019 18:23:21 +0200 Subject: 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. --- sys/linux/init_vusb.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'sys/linux/init_vusb.go') 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)) -- cgit mrf-deployment