Hi,

Jasper pointed out that the minimum length should be 1.

Plese test !

Index: src/sys/dev/usb/if_upl.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/if_upl.c,v
retrieving revision 1.47
diff -u -p -r1.47 if_upl.c
--- src/sys/dev/usb/if_upl.c    25 Jan 2011 20:03:35 -0000      1.47
+++ src/sys/dev/usb/if_upl.c    21 Mar 2011 18:51:02 -0000
@@ -494,6 +494,11 @@ upl_rxeof(usbd_xfer_handle xfer, usbd_pr
        DPRINTFN(9,("%s: %s: enter status=%d length=%d\n",
                    sc->sc_dev.dv_xname, __func__, status, total_len));
 
+       if (total_len <= 1 || total_len > UPL_BUFSZ) {
+               ifp->if_ierrors++;
+               goto done;
+       }
+
        m = c->upl_mbuf;
        memcpy(mtod(c->upl_mbuf, char *), c->upl_buf, total_len);

Reply via email to