DragonFlyBSD Kernel Audit
DF-0399 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/net/route.c b/sys/net/route.c
--- a/sys/net/route.c
+++ b/sys/net/route.c
@@ -422,10 +422,13 @@
 		flags |= RTF_MODIFIED;
 
 		/* We only need to report rtmsg on CPU0 */
-		rt_setgate(rt, rt_key(rt), gateway);
-		if (mycpuid == 0)
+		error = rt_setgate(rt, rt_key(rt), gateway);
+		if (error)
+			stat = &rtstat.rts_badredirect;
+		else if (mycpuid == 0)
 			rt_rtmsg(RTM_CHANGE, rt, rt->rt_ifp, 0);
-		error = 0;
+		if (!error)
+			error = 0;
 		stat = &rtstat.rts_newgateway;
 	}