summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/command.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>1999-02-25 20:05:55 +0000
committerbrian <brian@FreeBSD.org>1999-02-25 20:05:55 +0000
commit909314a3a7d15c37f170149208b7e71611ae2a35 (patch)
treeafdc682e8f39824684da2407e9680b1c33720bb8 /usr.sbin/ppp/command.c
parenta3fa9785d059a69334c6d4842a24d0e8300c8300 (diff)
downloadFreeBSD-src-909314a3a7d15c37f170149208b7e71611ae2a35.zip
FreeBSD-src-909314a3a7d15c37f170149208b7e71611ae2a35.tar.gz
Parse IP addresses more securely - specifically, don't allow
a bum name to return as 0.0.0.0... we don't want ``delete xxx'' to delete the default route when xxx doesn't resolve. Support IP number specifications as the host when specifying a tcp-style device (rather than *just* hostnames).
Diffstat (limited to 'usr.sbin/ppp/command.c')
-rw-r--r--usr.sbin/ppp/command.c29
1 files changed, 7 insertions, 22 deletions
diff --git a/usr.sbin/ppp/command.c b/usr.sbin/ppp/command.c
index 20a158d..91f43c33 100644
--- a/usr.sbin/ppp/command.c
+++ b/usr.sbin/ppp/command.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: command.c,v 1.181 1999/02/16 00:16:55 brian Exp $
+ * $Id: command.c,v 1.182 1999/02/18 00:52:12 brian Exp $
*
*/
#include <sys/param.h>
@@ -141,7 +141,7 @@
#define NEG_DNS 52
const char Version[] = "2.11";
-const char VersionDate[] = "$Date: 1999/02/16 00:16:55 $";
+const char VersionDate[] = "$Date: 1999/02/18 00:52:12 $";
static int ShowCommand(struct cmdargs const *);
static int TerminalCommand(struct cmdargs const *);
@@ -1271,22 +1271,6 @@ SetEscape(struct cmdargs const *arg)
return 0;
}
-static struct in_addr
-GetIpAddr(const char *cp)
-{
- struct hostent *hp;
- struct in_addr ipaddr;
-
- if (inet_aton(cp, &ipaddr) == 0) {
- hp = gethostbyname(cp);
- if (hp && hp->h_addrtype == AF_INET)
- memcpy(&ipaddr, hp->h_addr, hp->h_length);
- else
- ipaddr.s_addr = 0;
- }
- return (ipaddr);
-}
-
static int
SetInterfaceAddr(struct cmdargs const *arg)
{
@@ -1941,10 +1925,11 @@ DeleteCommand(struct cmdargs const *arg)
dest = arg->bundle->ncp.ipcp.peer_ip;
addrs = ROUTE_DSTHISADDR;
} else {
- if (strcasecmp(arg->argv[arg->argn], "default") == 0)
- dest.s_addr = INADDR_ANY;
- else
- dest = GetIpAddr(arg->argv[arg->argn]);
+ dest = GetIpAddr(arg->argv[arg->argn]);
+ if (dest.s_addr == INADDR_NONE) {
+ log_Printf(LogWARN, "%s: Invalid IP address\n", arg->argv[arg->argn]);
+ return -1;
+ }
addrs = ROUTE_STATIC;
}
none.s_addr = INADDR_ANY;
OpenPOWER on IntegriCloud