diff --git a/tests/netdb_test.cpp b/tests/netdb_test.cpp
index 168f7c1..33f6c01 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));
+}
