DragonFlyBSD Kernel Audit
DF-1207 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/netif/alc/if_alc.c b/sys/dev/netif/alc/if_alc.c
--- a/sys/dev/netif/alc/if_alc.c
+++ b/sys/dev/netif/alc/if_alc.c
@@ -1360,7 +1360,7 @@
 	sc->alc_res_rid = PCIR_BAR(0);
 	sc->alc_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
 	    &sc->alc_res_rid, RF_ACTIVE);
-	if (error != 0) {
+	if (sc->alc_res == NULL) {
 		device_printf(dev, "cannot allocate memory resources.\n");
 		goto fail;
 	}
@@ -3301,7 +3301,9 @@
 	ifp = sc->alc_ifp;
 	status = le32toh(rrd->status);
 	rdinfo = le32toh(rrd->rdinfo);
-	rx_cons = RRD_RD_IDX(rdinfo);
+		rx_cons = RRD_RD_IDX(rdinfo);
+		if (rx_cons >= ALC_RX_RING_CNT)
+			return;
 	nsegs = RRD_RD_CNT(rdinfo);
 
 	sc->alc_cdata.alc_rxlen = RRD_BYTES(status);