[PATCH 4/5] server: Add HID length and report to rawinput union.

Alexandre Julliard julliard at winehq.org
Thu May 13 03:59:41 CDT 2021


Rémi Bernon <rbernon at codeweavers.com> writes:

> @@ -3308,16 +3308,18 @@ DECL_HANDLER(get_rawinput_buffer)
>      {
>          struct message *msg = LIST_ENTRY( ptr, struct message, entry );
>          struct hardware_msg_data *data = msg->data;
> +        data_size_t hid_size = data->rawinput.type != RIM_TYPEHID ? 0 : data->rawinput.hid.length;
> +        data_size_t data_size = sizeof(*data) + hid_size;

You can't trust the length passed by the client.

> @@ -408,9 +424,11 @@ static void dump_rawinput( const char *prefix, const union rawinput *rawinput )
>                   rawinput->kbd.message, rawinput->kbd.vkey, rawinput->kbd.scan );
>          break;
>      case RIM_TYPEHID:
> -        fprintf( stderr, "%s{type=HID,device=%04x,param=%04x,page=%04hx,usage=%04hx}",
> +        fprintf( stderr, "%s{type=HID,device=%04x,param=%04x,page=%04hx,usage=%04hx,length=%u",
>                   prefix, rawinput->hid.device, rawinput->hid.param, rawinput->hid.usage_page,
> -                 rawinput->hid.usage );
> +                 rawinput->hid.usage, rawinput->hid.length );
> +        dump_varargs_bytes( ",report=", rawinput->hid.length );

Same here.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list