From ba68720f4f5f598b606876c287f374ba9ac004ba Mon Sep 17 00:00:00 2001 From: Julian Elischer Date: Fri, 18 Jul 1997 09:05:12 +0000 Subject: fix what appears to me to be absolutle bogus code to do with netmasks.. we fed totally bogus data into the kernel to do with default routes and it just believed us. this led to: 1/ kernel panics 2/ the default route refusing to be deleted or added (depending on a number of factors, usually it worked ok.) --- sbin/route/route.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'sbin') diff --git a/sbin/route/route.c b/sbin/route/route.c index 7ffd132f6a6f..af7250de7883 100644 --- a/sbin/route/route.c +++ b/sbin/route/route.c @@ -43,7 +43,7 @@ static const char copyright[] = static char sccsid[] = "@(#)route.c 8.3 (Berkeley) 3/19/94"; */ static const char rcsid[] = - "$Id: route.c,v 1.24 1997/04/02 17:05:30 phk Exp $"; + "$Id: route.c,v 1.25 1997/06/18 06:30:34 charnier Exp $"; #endif /* not lint */ #include @@ -763,7 +763,6 @@ getaddr(which, s, hpp) switch (which) { case RTA_DST: su = &so_dst; - su->sa.sa_family = af; break; case RTA_GATEWAY: su = &so_gate; @@ -809,7 +808,6 @@ getaddr(which, s, hpp) return(1); } } - su->sa.sa_family = af; break; case RTA_NETMASK: su = &so_mask; @@ -819,26 +817,29 @@ getaddr(which, s, hpp) break; case RTA_IFP: su = &so_ifp; - su->sa.sa_family = af; break; case RTA_IFA: su = &so_ifa; - su->sa.sa_family = af; break; default: usage("Internal Error"); /*NOTREACHED*/ } su->sa.sa_len = aflen; + su->sa.sa_family = af; /* cases that don't want it have left already */ if (strcmp(s, "default") == 0) { + /* + * Default is net 0.0.0.0/0 + */ switch (which) { case RTA_DST: forcenet++; + /* bzero(su, sizeof(*su)); *//* for readability */ (void) getaddr(RTA_NETMASK, s, 0); break; case RTA_NETMASK: case RTA_GENMASK: - su->sa.sa_len = 0; + /* bzero(su, sizeof(*su)); *//* for readability */ } return (0); } -- cgit v1.3