Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/rofl0r/proxychains-ng.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrofl0r <rofl0r@users.noreply.github.com>2021-12-12 18:59:34 +0300
committerrofl0r <rofl0r@users.noreply.github.com>2021-12-12 18:59:34 +0300
commitb83e90dcaf338ec08b30cd018e3a3542886686d9 (patch)
treea3aaa0074ba77a42e7474a1353d9c11c8c743db4
parent7de7dd0de1ff387a627620ac3482b4cd9b3fba95 (diff)
update some testcases
-rw-r--r--tests/test_getaddrinfo.c35
-rw-r--r--tests/test_getnameinfo.c12
2 files changed, 47 insertions, 0 deletions
diff --git a/tests/test_getaddrinfo.c b/tests/test_getaddrinfo.c
index 88dc890..462406f 100644
--- a/tests/test_getaddrinfo.c
+++ b/tests/test_getaddrinfo.c
@@ -3,6 +3,8 @@
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
+#include <assert.h>
+#include <string.h>
#ifndef NI_MAXHOST
#define NI_MAXHOST 1025
@@ -43,9 +45,42 @@ static int doit(const char* host, const char* service) {
return EXIT_SUCCESS;
}
+/* reproduce use of getaddrinfo as used by nmap 7.91's canonicalize_address */
+int canonicalize_address(struct sockaddr_storage *ss, struct sockaddr_storage *output) {
+ char canonical_ip_string[NI_MAXHOST];
+ struct addrinfo *ai;
+ int rc;
+ /* Convert address to string. */
+ rc = getnameinfo((struct sockaddr *) ss, sizeof(*ss),
+ canonical_ip_string, sizeof(canonical_ip_string), NULL, 0, NI_NUMERICHOST);
+ assert(rc == 0);
+ struct addrinfo hints = {
+ .ai_family = ss->ss_family,
+ .ai_socktype = SOCK_DGRAM,
+ .ai_flags = AI_NUMERICHOST,
+ };
+ rc = getaddrinfo(canonical_ip_string, NULL, &hints, &ai);
+ if (rc != 0 || ai == NULL)
+ return -1;
+ assert(ai->ai_addrlen > 0 && ai->ai_addrlen <= (int) sizeof(*output));
+ memcpy(output, ai->ai_addr, ai->ai_addrlen);
+ freeaddrinfo(ai);
+ return 0;
+}
+
int main(void) {
int ret;
ret = doit("www.example.com", NULL);
ret = doit("www.example.com", "80");
+ struct sockaddr_storage o, ss = {.ss_family = PF_INET};
+ struct sockaddr_in *v4 = &ss;
+ struct sockaddr_in6 *v6 = &ss;
+ memcpy(&v4->sin_addr, "\x7f\0\0\1", 4);
+ ret = canonicalize_address(&ss, &o);
+ assert (ret == 0);
+ ss.ss_family = PF_INET6;
+ memcpy(&v6->sin6_addr, "\0\0\0\0" "\0\0\0\0" "\0\0\0\0""\0\0\0\1", 16);
+ ret = canonicalize_address(&ss, &o);
+ assert (ret == 0);
return ret;
}
diff --git a/tests/test_getnameinfo.c b/tests/test_getnameinfo.c
index dbe061a..3348997 100644
--- a/tests/test_getnameinfo.c
+++ b/tests/test_getnameinfo.c
@@ -123,5 +123,17 @@ int main() {
ASSERT(ret == 0);
+ b.sin6_port = 0;
+ b.sin6_scope_id = 0;
+ memcpy(&b.sin6_addr,"\0\0\0\0" "\0\0\0\0" "\0\0\0\0" "\0\0\0\1", 16);
+
+ if ((ret = getnameinfo((void*)sb, sizeof b, hbuf, sizeof(hbuf), NULL,
+ 0, NI_NUMERICHOST)) == 0)
+ printf("host=%s\n", hbuf);
+ else
+ printf("%s\n", gai_strerror(ret));
+
+ ASSERT(ret == 0);
+
return 0;
}