On Sun, Jun 06, 2004 at 11:40:19AM +0200, Vojtech Pavlik wrote:
> On Fri, Jun 04, 2004 at 08:07:25PM +1000, Herbert Xu wrote:
> > On Thu, May 06, 2004 at 08:15:15PM +1000, herbert wrote:
> > > 
> > > The current code is applying the maxusage limit to GUSAGE/SUSAGE.  This
> > > is incorrect as the number of values is stored in field->report_count,
> > > not field->maxusage.  The USB phone from www.virbiage.com is one device
> > > where report_count exceeds maxusage.
> > 
> > I've remove the changes unrelated to the boundary check.  Please let me
> > know if you have any problems with this patch.
> 
> Thanks, applied.

Any idea when this patch will get into the main tree?

Thanks,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
===== drivers/usb/input/hiddev.c 1.49 vs edited =====
--- 1.49/drivers/usb/input/hiddev.c     2004-05-29 07:08:23 +10:00
+++ edited/drivers/usb/input/hiddev.c   2004-06-04 20:02:29 +10:00
@@ -638,15 +638,18 @@
                                goto inval;
 
                        field = report->field[uref->field_index];
-                       if (uref->usage_index >= field->maxusage)
-                               goto inval;
-
-                       if (cmd == HIDIOCGUSAGES || cmd == HIDIOCSUSAGES) {
-                               if (uref_multi->num_values >= HID_MAX_USAGES || 
-                                   uref->usage_index >= field->maxusage || 
-                                  (uref->usage_index + uref_multi->num_values) >= 
field->maxusage)
+                       if (cmd == HIDIOCGCOLLECTIONINDEX) {
+                               if (uref->usage_index >= field->maxusage)
                                        goto inval;
-                       }
+                       } else if (uref->usage_index >= field->report_count)
+                               goto inval;
+                       else if ((cmd == HIDIOCGUSAGES ||
+                                 cmd == HIDIOCSUSAGES) &&
+                                (uref->usage_index + uref_multi->num_values >=
+                                 field->report_count ||
+                                 uref->usage_index + uref_multi->num_values <
+                                 uref->usage_index))
+                               goto inval;
                }
 
                switch (cmd) {

Reply via email to