⬢ DragonFlyBSD Kernel Audit
DF-5396 / fix.diff
← back to finding ↓ download raw
--- if_urndis.c.orig	2026-10-04 04:26:45.269523718 +0000
+++ if_urndis.c.fixed5396	2026-10-04 04:27:07.657238854 +0000
@@ -856,7 +856,7 @@
 				DPRINTF("invalid ethernet size "
 				    "%u < %u\n", msg.rm_datalen, (unsigned)sizeof(struct ether_header));
 				goto tr_setup;
-			} else if (msg.rm_datalen > (uint32_t)MCLBYTES) {
+			} else if (msg.rm_datalen > (uint32_t)(MCLBYTES - ETHER_ALIGN)) {
 				IFNET_STAT_INC(ifp, ierrors, 1);
 				DPRINTF("invalid ethernet size "
 				    "%u > %u\n",
@@ -870,6 +870,7 @@
 
 			/* check if we have a buffer */
 			if (m != NULL) {
+				m->m_len = m->m_pkthdr.len = msg.rm_datalen + ETHER_ALIGN;
 				m_adj(m, ETHER_ALIGN);
 
 				usbd_copy_out(pc, offset + msg.rm_dataoffset +