diff options
| author | Andrey Konovalov <andreyknvl@google.com> | 2019-12-11 18:45:13 +0100 |
|---|---|---|
| committer | Andrey Konovalov <andreyknvl@gmail.com> | 2019-12-11 19:20:07 +0100 |
| commit | d973f52833e0e3cec5406aa9cdf606a463d85c46 (patch) | |
| tree | f45b613d6a74f235489f1735285ea6c4ce1fc5c1 | |
| parent | 0d368675f84a2d7f3389d4204bdd6a20d1989006 (diff) | |
executor: update raw gadget interface
| -rw-r--r-- | executor/common_usb.h | 12 | ||||
| -rw-r--r-- | pkg/csource/generated.go | 12 | ||||
| -rw-r--r-- | tools/syz-usbgen/keyboard.c | 12 |
3 files changed, 21 insertions, 15 deletions
diff --git a/executor/common_usb.h b/executor/common_usb.h index d036128de..687baf095 100644 --- a/executor/common_usb.h +++ b/executor/common_usb.h @@ -76,10 +76,12 @@ static bool parse_usb_descriptor(char* buffer, size_t length, struct usb_device_ return true; } +#define UDC_NAME_LENGTH_MAX 128 + struct usb_raw_init { - __u64 speed; - const __u8* driver_name; - const __u8* device_name; + __u8 driver_name[UDC_NAME_LENGTH_MAX]; + __u8 device_name[UDC_NAME_LENGTH_MAX]; + __u8 speed; }; enum usb_raw_event_type { @@ -121,9 +123,9 @@ static int usb_raw_open() static int usb_raw_init(int fd, uint32 speed, const char* driver, const char* device) { struct usb_raw_init arg; + strncpy((char*)&arg.driver_name[0], driver, sizeof(arg.driver_name)); + strncpy((char*)&arg.device_name[0], device, sizeof(arg.device_name)); arg.speed = speed; - arg.driver_name = (const __u8*)driver; - arg.device_name = (const __u8*)device; return ioctl(fd, USB_RAW_IOCTL_INIT, &arg); } diff --git a/pkg/csource/generated.go b/pkg/csource/generated.go index efdbb0090..1361402c8 100644 --- a/pkg/csource/generated.go +++ b/pkg/csource/generated.go @@ -2073,10 +2073,12 @@ static bool parse_usb_descriptor(char* buffer, size_t length, struct usb_device_ return true; } +#define UDC_NAME_LENGTH_MAX 128 + struct usb_raw_init { - __u64 speed; - const __u8* driver_name; - const __u8* device_name; + __u8 driver_name[UDC_NAME_LENGTH_MAX]; + __u8 device_name[UDC_NAME_LENGTH_MAX]; + __u8 speed; }; enum usb_raw_event_type { @@ -2118,9 +2120,9 @@ static int usb_raw_open() static int usb_raw_init(int fd, uint32 speed, const char* driver, const char* device) { struct usb_raw_init arg; + strncpy((char*)&arg.driver_name[0], driver, sizeof(arg.driver_name)); + strncpy((char*)&arg.device_name[0], device, sizeof(arg.device_name)); arg.speed = speed; - arg.driver_name = (const __u8*)driver; - arg.device_name = (const __u8*)device; return ioctl(fd, USB_RAW_IOCTL_INIT, &arg); } diff --git a/tools/syz-usbgen/keyboard.c b/tools/syz-usbgen/keyboard.c index 9efa53c2e..00ae7914d 100644 --- a/tools/syz-usbgen/keyboard.c +++ b/tools/syz-usbgen/keyboard.c @@ -42,10 +42,12 @@ struct hid_descriptor { /*----------------------------------------------------------------------*/ +#define UDC_NAME_LENGTH_MAX 128 + struct usb_raw_init { - __u64 speed; - const __u8 *driver_name; - const __u8 *device_name; + __u8 driver_name[UDC_NAME_LENGTH_MAX]; + __u8 device_name[UDC_NAME_LENGTH_MAX]; + __u8 speed; }; enum usb_raw_event_type { @@ -92,9 +94,9 @@ int usb_raw_open() { void usb_raw_init(int fd, enum usb_device_speed speed) { struct usb_raw_init arg; + strcpy(&arg.driver_name[0], "dummy_udc"); + strcpy(&arg.device_name[0], "dummy_udc.0"); arg.speed = speed; - arg.driver_name = "dummy_udc"; - arg.device_name = "dummy_udc.0"; int rv = ioctl(fd, USB_RAW_IOCTL_INIT, &arg); if (rv < 0) { perror("ioctl(USB_RAW_IOCTL_INIT)"); |
