diff options
Diffstat (limited to 'usr.sbin/mrouted/inet.c')
-rw-r--r-- | usr.sbin/mrouted/inet.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/usr.sbin/mrouted/inet.c b/usr.sbin/mrouted/inet.c index b60e3854da35..e0ce09e15201 100644 --- a/usr.sbin/mrouted/inet.c +++ b/usr.sbin/mrouted/inet.c @@ -7,7 +7,7 @@ * Leland Stanford Junior University. * * - * $Id: inet.c,v 3.8 1995/11/29 22:36:57 fenner Rel $ + * $Id: inet.c,v 3.8.1.1 1995/12/01 22:20:26 fenner Exp $ */ @@ -155,15 +155,17 @@ inet_fmts(addr, mask, s) * with "255.255.255.255".) */ u_int32 -inet_parse(s) +inet_parse(s,n) char *s; + int n; { u_int32 a = 0; - u_int a0, a1, a2, a3; + u_int a0 = 0, a1 = 0, a2 = 0, a3 = 0; + int i; char c; - if (sscanf(s, "%u.%u.%u.%u%c", &a0, &a1, &a2, &a3, &c) != 4 || - a0 > 255 || a1 > 255 || a2 > 255 || a3 > 255) + i = sscanf(s, "%u.%u.%u.%u%c", &a0, &a1, &a2, &a3, &c); + if (i < n || i > 4 || a0 > 255 || a1 > 255 || a2 > 255 || a3 > 255) return (0xffffffff); ((u_char *)&a)[0] = a0; |