On Tue, 2012-09-25 at 16:30 +0200, Antonio Ospite wrote:
> +static int ps3remote_mapping(struct hid_device *hdev, struct hid_input *hi,
> +                          struct hid_field *field, struct hid_usage *usage,
> +                          unsigned long **bit, int *max)
> +{
> +     unsigned int key = usage->hid & HID_USAGE;

The size check below should be moved into the switch statement, and
modified for each, as you could access beyond the joypad_buttons array
as-is. The usage page check can stay outside the switch.

> +     if ((usage->hid & HID_USAGE_PAGE) != HID_UP_BUTTON ||
> +         key >= ARRAY_SIZE(ps3remote_keymap_remote_buttons))
> +             return -1;
> +
> +     switch (usage->collection_index) {
> +     case 1:
> +             key = ps3remote_keymap_joypad_buttons[key];
> +             if (!key)
> +                     return -1;
> +             break;
> +     case 2:
> +             key = ps3remote_keymap_remote_buttons[key];
> +             if (!key)
> +                     return -1;
> +             break;
> +     default:
> +             return -1;
> +     }
> +
> +     hid_map_usage_clear(hi, usage, bit, max, EV_KEY, key);
> +     return 1;
> +}

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to