Module Name:    src
Committed By:   mrg
Date:           Sun Aug 11 02:37:04 UTC 2019

Modified Files:
        src/sys/dev/usb: if_axe.c if_axen.c if_cdce.c if_ure.c

Log Message:
copy a pattern from if_udav.c, which already had "too much" check.

even though overflow or underflow is really unlikely here, reorder
various expressions to reduce the likelyhood even further.


To generate a diff of this commit:
cvs rdiff -u -r1.110 -r1.111 src/sys/dev/usb/if_axe.c
cvs rdiff -u -r1.60 -r1.61 src/sys/dev/usb/if_axen.c
cvs rdiff -u -r1.62 -r1.63 src/sys/dev/usb/if_cdce.c
cvs rdiff -u -r1.22 -r1.23 src/sys/dev/usb/if_ure.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/usb/if_axe.c
diff -u src/sys/dev/usb/if_axe.c:1.110 src/sys/dev/usb/if_axe.c:1.111
--- src/sys/dev/usb/if_axe.c:1.110	Sun Aug 11 01:04:33 2019
+++ src/sys/dev/usb/if_axe.c	Sun Aug 11 02:37:03 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_axe.c,v 1.110 2019/08/11 01:04:33 mrg Exp $	*/
+/*	$NetBSD: if_axe.c,v 1.111 2019/08/11 02:37:03 mrg Exp $	*/
 /*	$OpenBSD: if_axe.c,v 1.137 2016/04/13 11:03:37 mpi Exp $ */
 
 /*
@@ -87,7 +87,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_axe.c,v 1.110 2019/08/11 01:04:33 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_axe.c,v 1.111 2019/08/11 02:37:03 mrg Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -1192,9 +1192,9 @@ axe_tx_prepare(struct usbnet *un, struct
 			length, m->m_pkthdr.len, sizeof(hdr), 0);
 	}
 
-	length = hdr_len + m->m_pkthdr.len + tlr_len;
-	if (length > un->un_tx_bufsz)
+	if (m->m_pkthdr.len > un->un_tx_bufsz - hdr_len - tlr_len)
 		return 0;
+	length = hdr_len + m->m_pkthdr.len + tlr_len;
 
 	if (hdr_len)
 		memcpy(c->unc_buf, &hdr, hdr_len);

Index: src/sys/dev/usb/if_axen.c
diff -u src/sys/dev/usb/if_axen.c:1.60 src/sys/dev/usb/if_axen.c:1.61
--- src/sys/dev/usb/if_axen.c:1.60	Sun Aug 11 01:04:33 2019
+++ src/sys/dev/usb/if_axen.c	Sun Aug 11 02:37:03 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_axen.c,v 1.60 2019/08/11 01:04:33 mrg Exp $	*/
+/*	$NetBSD: if_axen.c,v 1.61 2019/08/11 02:37:03 mrg Exp $	*/
 /*	$OpenBSD: if_axen.c,v 1.3 2013/10/21 10:10:22 yuo Exp $	*/
 
 /*
@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_axen.c,v 1.60 2019/08/11 01:04:33 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_axen.c,v 1.61 2019/08/11 02:37:03 mrg Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -863,9 +863,9 @@ axen_tx_prepare(struct usbnet *un, struc
 
 	usbnet_isowned_tx(un);
 
-	length = m->m_pkthdr.len + sizeof(hdr);
-	if (length > un->un_tx_bufsz)
+	if (m->m_pkthdr.len > un->un_tx_bufsz - sizeof(hdr))
 		return 0;
+	length = m->m_pkthdr.len + sizeof(hdr);
 
 	/* XXX Is this needed?  wMaxPacketSize? */
 	switch (un->un_udev->ud_speed) {

Index: src/sys/dev/usb/if_cdce.c
diff -u src/sys/dev/usb/if_cdce.c:1.62 src/sys/dev/usb/if_cdce.c:1.63
--- src/sys/dev/usb/if_cdce.c:1.62	Sun Aug 11 01:04:33 2019
+++ src/sys/dev/usb/if_cdce.c	Sun Aug 11 02:37:03 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_cdce.c,v 1.62 2019/08/11 01:04:33 mrg Exp $ */
+/*	$NetBSD: if_cdce.c,v 1.63 2019/08/11 02:37:03 mrg Exp $ */
 
 /*
  * Copyright (c) 1997, 1998, 1999, 2000-2003 Bill Paul <wp...@windriver.com>
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_cdce.c,v 1.62 2019/08/11 01:04:33 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_cdce.c,v 1.63 2019/08/11 02:37:03 mrg Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -305,9 +305,9 @@ cdce_tx_prepare(struct usbnet *un, struc
 	if (un->un_flags & CDCE_ZAURUS)
 		extra = sizeof(crc);
 
-	length = m->m_pkthdr.len + extra;
-	if (length > un->un_tx_bufsz)
+	if (m->m_pkthdr.len > un->un_tx_bufsz - extra)
 		return 0;
+	length = m->m_pkthdr.len + extra;
 
 	m_copydata(m, 0, m->m_pkthdr.len, c->unc_buf);
 	if (un->un_flags & CDCE_ZAURUS) {

Index: src/sys/dev/usb/if_ure.c
diff -u src/sys/dev/usb/if_ure.c:1.22 src/sys/dev/usb/if_ure.c:1.23
--- src/sys/dev/usb/if_ure.c:1.22	Sun Aug 11 01:04:33 2019
+++ src/sys/dev/usb/if_ure.c	Sun Aug 11 02:37:04 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_ure.c,v 1.22 2019/08/11 01:04:33 mrg Exp $	*/
+/*	$NetBSD: if_ure.c,v 1.23 2019/08/11 02:37:04 mrg Exp $	*/
 /*	$OpenBSD: if_ure.c,v 1.10 2018/11/02 21:32:30 jcs Exp $	*/
 
 /*-
@@ -30,7 +30,7 @@
 /* RealTek RTL8152/RTL8153 10/100/Gigabit USB Ethernet device */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_ure.c,v 1.22 2019/08/11 01:04:33 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_ure.c,v 1.23 2019/08/11 02:37:04 mrg Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -1066,7 +1066,7 @@ ure_tx_prepare(struct usbnet *un, struct
 
 	usbnet_isowned_tx(un);
 
-	if (m->m_pkthdr.len + sizeof(txhdr) > un->un_tx_bufsz)
+	if (m->m_pkthdr.len > un->un_tx_bufsz - sizeof(txhdr))
 		return 0;
 
 	/* header */

Reply via email to