--- libc/inet/inet_net.c.orig 2007-06-16 11:09:21 +0000 +++ libc/inet/inet_net.c 2007-06-16 11:12:07 +0000 @@ -87,8 +87,10 @@ } break; } + if (val > 0xff) + return (INADDR_NONE); if (*cp == '.') { - if (pp >= parts + 4) + if (pp >= parts + 3) return (INADDR_NONE); *pp++ = val, cp++; goto again; @@ -101,7 +103,7 @@ return (INADDR_NONE); for (val = 0, i = 0; i < n; i++) { val <<= 8; - val |= parts[i] & 0xff; + val |= parts[i]; } return (val); }