diff --git a/libc/sock/inet_ntop.c b/libc/sock/inet_ntop.c index afbc88d94..fd5e58c97 100644 --- a/libc/sock/inet_ntop.c +++ b/libc/sock/inet_ntop.c @@ -27,7 +27,7 @@ * @param af can be AF_INET or AF_INET6 * @param src is the binary-encoded address, e.g. &addr->sin_addr * @param dst is the output string buffer - * @param size needs to be 16+ for IPv4 and 72+ for IPv6 + * @param size needs to be 16+ for IPv4 and 46+ for IPv6 * @return dst on success or NULL w/ errno */ const char *inet_ntop(int af, const void *src, char *dst, uint32_t size) { @@ -52,7 +52,7 @@ const char *inet_ntop(int af, const void *src, char *dst, uint32_t size) { enospc(); } } else if (af == AF_INET6) { - if (size >= 16 * 4 + 8) { + if (size >= 46) { t = 0; i = 0; for (i = 0; i < 16; i += 2) { diff --git a/test/libc/sock/inet_ntop_test.c b/test/libc/sock/inet_ntop_test.c index a98ab7671..cb8d51422 100644 --- a/test/libc/sock/inet_ntop_test.c +++ b/test/libc/sock/inet_ntop_test.c @@ -56,14 +56,14 @@ TEST(inet_ntop, testNoSpace) { } TEST(inet_ntop, ipv6_testMin_isJustColons) { - char buf[72]; + char buf[46]; uint8_t ip[16] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; EXPECT_STREQ("::", inet_ntop(AF_INET6, ip, buf, sizeof(buf))); } TEST(inet_ntop, ipv6_testMax) { - char buf[72]; + char buf[46]; uint8_t ip[16] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; EXPECT_STREQ("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", @@ -71,14 +71,14 @@ TEST(inet_ntop, ipv6_testMax) { } TEST(inet_ntop, ipv6_loopback_isColonsThenJustOne) { - char buf[72]; + char buf[46]; uint8_t ip[16] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}; EXPECT_STREQ("::1", inet_ntop(AF_INET6, ip, buf, sizeof(buf))); } TEST(inet_ntop, ipv6_rfc4291example) { - char buf[72]; + char buf[46]; uint8_t ip[16] = {0x20, 0x01, 0x0D, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x20, 0x0C, 0x41, 0x7A}; EXPECT_STREQ("2001:db8::8:800:200c:417a", @@ -86,14 +86,14 @@ TEST(inet_ntop, ipv6_rfc4291example) { } TEST(inet_ntop, ipv6_leading) { - char buf[72]; + char buf[46]; uint8_t ip[16] = {0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; EXPECT_STREQ("1::", inet_ntop(AF_INET6, ip, buf, sizeof(buf))); } TEST(inet_ntop, ipv6_kindOfLeading) { - char buf[72]; + char buf[46]; uint8_t ip[16] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; EXPECT_STREQ("100::", inet_ntop(AF_INET6, ip, buf, sizeof(buf)));