HID: fix parsing of local delimiter with size 0
authorJiri Kosina <jkosina@suse.cz>
Tue, 5 Jan 2010 10:45:52 +0000 (11:45 +0100)
committerJiri Kosina <jkosina@suse.cz>
Tue, 5 Jan 2010 10:45:52 +0000 (11:45 +0100)
Acording to HID standard 1.11, value 0 allows for size being 0.
Local delimiter tag has has 0 one of the possible values.

Therefore we need to handle this case properly, to be fully compliant
with the specification.

Reported-by: Marcin Tolysz <tolysz@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-core.c

index 6462c92..a4b496c 100644 (file)
@@ -387,7 +387,8 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
        __u32 data;
        unsigned n;
 
-       if (item->size == 0) {
+       /* Local delimiter could have value 0, which allows size to be 0 */
+       if (item->size == 0 && item->tag != HID_LOCAL_ITEM_TAG_DELIMITER) {
                dbg_hid("item data expected for local item\n");
                return -1;
        }