tests: Add test for hostnames with a trailing dot.
authorAndreas Schneider <asn@samba.org>
Wed, 3 Sep 2014 11:08:03 +0000 (13:08 +0200)
committerAndreas Schneider <asn@samba.org>
Tue, 9 Sep 2014 12:06:32 +0000 (14:06 +0200)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
tests/test_getaddrinfo.c

index a7714b1caa4f48227fb3b1c166e358003bb6dc99..492913b061385c12037277885d616e6d8a258386 100644 (file)
@@ -311,6 +311,34 @@ static void test_nwrap_getaddrinfo_null(void **state)
        freeaddrinfo(res);
 }
 
+static void test_nwrap_getaddrinfo_dot(void **state)
+{
+       struct addrinfo hints = {
+               .ai_family = AF_INET,
+       };
+       struct addrinfo *res = NULL;
+       struct sockaddr_in *sinp;
+       char ip[INET_ADDRSTRLEN];
+       int rc;
+
+       (void) state; /* unused */
+
+       /* Check with a dot at the end */
+       rc = getaddrinfo("magrathea.galaxy.site.", NULL, &hints, &res);
+       assert_int_equal(rc, 0);
+
+       assert_non_null(res->ai_next);
+       assert_int_equal(res->ai_family, AF_INET);
+
+       sinp = (struct sockaddr_in *)res->ai_addr;
+       assert_int_equal(sinp->sin_family, AF_INET);
+       inet_ntop(AF_INET, (void *)&sinp->sin_addr, ip, sizeof(ip));
+
+       assert_string_equal(ip, "127.0.0.11");
+
+       freeaddrinfo(res);
+}
+
 static void test_nwrap_getaddrinfo_ipv6(void **state)
 {
        struct addrinfo hints;
@@ -353,6 +381,7 @@ int main(void) {
                unit_test(test_nwrap_getaddrinfo_name),
                unit_test(test_nwrap_getaddrinfo_service),
                unit_test(test_nwrap_getaddrinfo_null),
+               unit_test(test_nwrap_getaddrinfo_dot),
                unit_test(test_nwrap_getaddrinfo_ipv6),
        };