2011/3/20 Loganaden Velvindron <logana...@devio.us>

> Hi, this diff also discards packets larger than maximum buffer size.
>
> Please test.
>
> Index: src/sys/dev/usb/if_urndis.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/usb/if_urndis.c,v
> retrieving revision 1.29
> diff -u -p -r1.29 if_urndis.c
> --- src/sys/dev/usb/if_urndis.c 25 Jan 2011 20:03:35 -0000      1.29
> +++ src/sys/dev/usb/if_urndis.c 20 Mar 2011 05:22:55 -0000
> @@ -801,12 +801,13 @@ urndis_decap(struct urndis_softc *sc, st
>                DPRINTF(("%s: urndis_decap buffer size left %u\n",
> DEVNAME(sc),
>                    len));
>
> -               if (len < sizeof(*msg)) {
> +               if (len < sizeof(*msg) || len > RNDIS_BUFSZ) {
>                        printf("%s: urndis_decap invalid buffer len %u < "
> -                           "minimum header %u\n",
> +                           "minimum header %u maximum size %d\n",
>                            DEVNAME(sc),
>                            len,
> -                           sizeof(*msg));
> +                           sizeof(*msg),
> +                           RNDIS_BUFSZ);
>                        return;
>                }
>
>

With this patch and doing large scp's, I get a few:

urndis0: urndis_decap invalid buffer len 1 < minimum header 44 maximum size
1562
urndis0: urndis_decap invalid buffer len 1 < minimum header 44 maximum size
1562

in my amd64 dmesg buffer, but no other changes noticed.

-- 
 To our sweethearts and wives.  May they never meet. -- 19th century toast

Reply via email to