Loading...
--- inet_net_pton.c.orig 2008-09-01 22:59:17.000000000 -0700 +++ inet_net_pton.c 2008-09-01 23:00:34.000000000 -0700 @@ -18,6 +18,10 @@ #if defined(LIBC_SCCS) && !defined(lint) static const char rcsid[] = "$Id: inet_net_pton.c,v 1.7.18.1 2005/04/27 05:00:53 sra Exp $"; #endif + +/* the algorithms only can deal with ASCII, so we optimize for it */ +#define USE_ASCII + #include <sys/cdefs.h> __FBSDID("$FreeBSD: src/lib/libc/inet/inet_net_pton.c,v 1.3 2007/06/03 17:20:26 ume Exp $"); @@ -135,11 +139,11 @@ inet_net_pton_ipv4(const char *src, u_ch assert(n >= 0 && n <= 9); bits *= 10; bits += n; + if (bits > 32) + goto emsgsize; } while ((ch = *src++) != '\0' && isascii(ch) && isdigit(ch)); if (ch != '\0') goto enoent; - if (bits > 32) - goto emsgsize; } /* Firey death and destruction unless we prefetched EOS. */ |