Use inet_pton to read ipv4 addresses
Use the standard POSIX inet_pton to convert from string to IPV4
address. This avoids problems where ip parses "127.2" wrong.
diff --git a/lib/utils.c b/lib/utils.c
index fa4fe3e..a88f82b 100644
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -246,10 +246,6 @@
int get_addr_1(inet_prefix *addr, const char *name, int family)
{
- const char *cp;
- unsigned char *ap = (unsigned char*)addr->data;
- int i;
-
memset(addr, 0, sizeof(*addr));
if (strcmp(name, "default") == 0 ||
@@ -288,17 +284,10 @@
addr->family = AF_INET;
if (family != AF_UNSPEC && family != AF_INET)
return -1;
+ if (inet_pton(AF_INET, name, addr->data) <= 0)
+ return -1;
addr->bytelen = 4;
addr->bitlen = -1;
- for (cp=name, i=0; *cp; cp++) {
- if (*cp <= '9' && *cp >= '0') {
- ap[i] = 10*ap[i] + (*cp-'0');
- continue;
- }
- if (*cp == '.' && ++i <= 3)
- continue;
- return -1;
- }
return 0;
}