diff options
author | Elliott Hughes <enh@google.com> | 2013-02-13 09:49:33 -0800 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2013-02-13 13:11:11 -0800 |
commit | d8213bb5738ac778fcb5d696d1294b0f8ddae7f3 (patch) | |
tree | 6422e3fd1d86e38a74301a05fa37b60115e7b85b /tests/netdb_test.cpp | |
parent | f659b3c90d8b55a44945af807364a5df0475bd0e (diff) |
Update getnameinfo.c, remove dead code, and fix error reporting.
Also add a unit test for the salen size checking.
Bug: 1889275
Change-Id: I8ec4107df9e2e9a8571e8915525249c6e44b98ad
Diffstat (limited to 'tests/netdb_test.cpp')
-rw-r--r-- | tests/netdb_test.cpp | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/tests/netdb_test.cpp b/tests/netdb_test.cpp index 168f7c148..33f6c01d8 100644 --- a/tests/netdb_test.cpp +++ b/tests/netdb_test.cpp @@ -19,10 +19,39 @@ #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> - +#include <netinet/in.h> TEST(netdb, getaddrinfo_NULL_hints) { addrinfo* ai = NULL; ASSERT_EQ(0, getaddrinfo("localhost", "9999", NULL, &ai)); freeaddrinfo(ai); } + +TEST(netdb, getnameinfo_salen) { + sockaddr_storage ss; + memset(&ss, 0, sizeof(ss)); + sockaddr* sa = reinterpret_cast<sockaddr*>(&ss); + char tmp[16]; + + ss.ss_family = AF_INET; + socklen_t too_much = sizeof(ss); + socklen_t just_right = sizeof(sockaddr_in); + socklen_t too_little = sizeof(sockaddr_in) - 1; + + ASSERT_EQ(0, getnameinfo(sa, too_much, tmp, sizeof(tmp), NULL, 0, NI_NUMERICHOST)); + ASSERT_STREQ("0.0.0.0", tmp); + ASSERT_EQ(0, getnameinfo(sa, just_right, tmp, sizeof(tmp), NULL, 0, NI_NUMERICHOST)); + ASSERT_STREQ("0.0.0.0", tmp); + ASSERT_EQ(EAI_FAMILY, getnameinfo(sa, too_little, tmp, sizeof(tmp), NULL, 0, NI_NUMERICHOST)); + + ss.ss_family = AF_INET6; + just_right = sizeof(sockaddr_in6); + too_little = sizeof(sockaddr_in6) - 1; + too_much = just_right + 1; + + ASSERT_EQ(0, getnameinfo(sa, too_much, tmp, sizeof(tmp), NULL, 0, NI_NUMERICHOST)); + ASSERT_STREQ("::", tmp); + ASSERT_EQ(0, getnameinfo(sa, just_right, tmp, sizeof(tmp), NULL, 0, NI_NUMERICHOST)); + ASSERT_STREQ("::", tmp); + ASSERT_EQ(EAI_FAMILY, getnameinfo(sa, too_little, tmp, sizeof(tmp), NULL, 0, NI_NUMERICHOST)); +} |