fix regression in inet_aton due to misinterpretation of __ipparse return
authorRich Felker <dalias@aerifal.cx>
Sat, 2 Nov 2013 08:07:12 +0000 (04:07 -0400)
committerRich Felker <dalias@aerifal.cx>
Sat, 2 Nov 2013 08:07:12 +0000 (04:07 -0400)
inet_aton returns a boolean success value, whereas __ipparse returns 0
on success and -1 on failure. also change the conditional in inet_addr
to be consistent with other uses of __ipparse where only negative
values are treated as failure.

src/network/inet_addr.c
src/network/inet_legacy.c

index 84137281ce33f2b3e6e0e8f139d9a8e0f3185ee0..ea0a8f7a455ec1fe05d91d9fce421ded07f10b10 100644 (file)
@@ -6,6 +6,6 @@
 in_addr_t inet_addr(const char *p)
 {
        struct sockaddr_in sin;
-       if (__ipparse(&sin, AF_INET, p)) return -1;
+       if (__ipparse(&sin, AF_INET, p) < 0) return -1;
        return sin.sin_addr.s_addr;
 }
index dd75420e12d7598dec08c81ea86e0a56de7721ed..0a0ad6fc607446dc75a48a36786771998a1eb884 100644 (file)
@@ -11,9 +11,9 @@ in_addr_t inet_network(const char *p)
 int inet_aton(const char *cp, struct in_addr *inp)
 {
        struct sockaddr_in sin;
-       int r = __ipparse(&sin, AF_INET, cp);
+       if (__ipparse(&sin, AF_INET, cp) < 0) return 0;
        *inp = sin.sin_addr;
-       return r;
+       return 1;
 }
 
 struct in_addr inet_makeaddr(int net, int host)