⬢ DragonFlyBSD Kernel Audit
DF-3506 / fix.diff
← back to finding ↓ download raw
--- a/sys/netgraph/fec/ng_fec.c
+++ b/sys/netgraph/fec/ng_fec.c
@@ -1170,10 +1170,20 @@
 	case NGM_FEC_COOKIE:
 		switch (msg->header.cmd) {
 		case NGM_FEC_ADD_IFACE:
+			if (msg->header.arglen < 2 ||
+			    memchr(msg->data, '\0', msg->header.arglen) == NULL) {
+				error = EINVAL;
+				break;
+			}
 			ifname = msg->data;
 			error = ng_fec_addport(priv, ifname);
 			break;
 		case NGM_FEC_DEL_IFACE:
+			if (msg->header.arglen < 2 ||
+			    memchr(msg->data, '\0', msg->header.arglen) == NULL) {
+				error = EINVAL;
+				break;
+			}
 			ifname = msg->data;
 			error = ng_fec_delport(priv, ifname);
 			break;
--- a/sys/netgraph/fec/ng_fec.c
+++ b/sys/netgraph/fec/ng_fec.c
@@ -273,7 +273,7 @@
 		newarray = kmalloc(newlen * sizeof(*ng_fec_units),
 				   M_NETGRAPH, M_NOWAIT);
 		if (newarray == NULL)
 			return (ENOMEM);
-		bcopy(ng_fec_units, newarray,
-		    ng_fec_units_len * sizeof(*ng_fec_units));
+		if (ng_fec_units_len > 0)
+			bcopy(ng_fec_units, newarray,
+			    ng_fec_units_len * sizeof(*ng_fec_units));
 		for (i = ng_fec_units_len; i < newlen; i++)
 			newarray[i] = ~0;