do not overflow for large prefix len (e.g. 2147483649)
authormarkus <markus@openbsd.org>
Mon, 1 Sep 2008 09:40:43 +0000 (09:40 +0000)
committermarkus <markus@openbsd.org>
Mon, 1 Sep 2008 09:40:43 +0000 (09:40 +0000)
report Maksymilian Arciemowicz; ok djm, deraadt

lib/libc/net/inet_net_pton.c

index 9bb3547..3105c33 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: inet_net_pton.c,v 1.5 2005/08/06 20:30:03 espie Exp $ */
+/*     $OpenBSD: inet_net_pton.c,v 1.6 2008/09/01 09:40:43 markus Exp $        */
 
 /*
  * Copyright (c) 1996 by Internet Software Consortium.
@@ -142,12 +142,12 @@ inet_net_pton_ipv4(const char *src, u_char *dst, size_t size)
                        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. */