usb/146367: commit references a PR
dfilter service
dfilter at FreeBSD.ORG
Sun May 9 09:30:08 UTC 2010
The following reply was made to PR usb/146367; it has been noted by GNATS.
From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:
Subject: Re: usb/146367: commit references a PR
Date: Sun, 9 May 2010 09:21:02 +0000 (UTC)
Author: kaiw
Date: Sun May 9 09:20:25 2010
New Revision: 207812
URL: http://svn.freebsd.org/changeset/base/207812
Log:
Catch up with libusbhid merge (rev 205728).
hid_get_data() now expects that the hid data passed in always contains
the report ID byte. Thus we should not skip the the report ID byte in
hid_interrupt(). Also, if HUP_KEYBOARD usage is an array, do not try
to modify the 'data' pointer, instead, increase the hid_item_t field
'pos' by 'report_size' before calling hid_get_data() during each
iteration.
PR: usb/146367
Reported and tested by: Alex Deiter
Pointy hat to: kaiw
Reviewed by: emax
Modified:
head/usr.sbin/bluetooth/bthidd/hid.c
Modified: head/usr.sbin/bluetooth/bthidd/hid.c
==============================================================================
--- head/usr.sbin/bluetooth/bthidd/hid.c Sun May 9 08:22:33 2010 (r207811)
+++ head/usr.sbin/bluetooth/bthidd/hid.c Sun May 9 09:20:25 2010 (r207812)
@@ -130,7 +130,7 @@ hid_interrupt(bthid_session_p s, uint8_t
hid_item_t h;
int32_t report_id, usage, page, val,
mouse_x, mouse_y, mouse_z, mouse_butt,
- mevents, kevents;
+ mevents, kevents, i;
assert(s != NULL);
assert(s->srv != NULL);
@@ -150,8 +150,8 @@ hid_interrupt(bthid_session_p s, uint8_t
}
report_id = data[1];
- data += 2;
- len -= 2;
+ data ++;
+ len --;
hid_device = get_hid_device(&s->bdaddr);
assert(hid_device != NULL);
@@ -202,17 +202,11 @@ hid_interrupt(bthid_session_p s, uint8_t
if (val && val < kbd_maxkey())
bit_set(s->keys1, val);
- data ++;
- len --;
-
- len = min(len, h.report_size);
- while (len > 0) {
+ for (i = 1; i < h.report_count; i++) {
+ h.pos += h.report_size;
val = hid_get_data(data, &h);
if (val && val < kbd_maxkey())
bit_set(s->keys1, val);
-
- data ++;
- len --;
}
}
break;
_______________________________________________
svn-src-all at freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
More information about the freebsd-usb
mailing list