Fix /sbin/route to never look up (invalid) interface names through DNS

/sbin/route has a bug where if it is passed an interface name that does
not exist, it falls through and winds up interpreting it as a hostname.
It fails out eventually, but on a system where DNS lookup is broken you
can end up waiting for up to 60 seconds waiting for the DNS lookup to
timeout.  I'm not quite sure what happens if the DNS lookup somehow
succeeds but I doubt that can end well.

Reviewed by:	markj, cem
MFC after:	2 weeks
Sponsored by:	EMC/Isilon Storage Division
This commit is contained in:
Ryan Stone 2015-09-17 16:56:49 +00:00
parent 66e5857b42
commit 60d978a75b
1 changed files with 3 additions and 0 deletions

View File

@ -1222,6 +1222,9 @@ getaddr(int idx, char *str, struct hostent **hpp, int nrflags)
freeifaddrs(ifap);
if (sdl != NULL)
return(1);
else
errx(EX_DATAERR,
"interface '%s' does not exist", str);
}
break;
case RTAX_IFP: