summaryrefslogtreecommitdiff
path: root/evdns.c
diff options
context:
space:
mode:
authorTobias Heider <tobias.heider@stusta.de>2021-07-06 17:40:58 +0200
committerTobias Heider <tobias.heider@stusta.de>2021-07-12 13:52:59 +0200
commit5c0e75c34e43743e57cd730383e3716ce9e3b519 (patch)
tree61bcf7b9b197ba978f6cf3c2b664c616e79728e9 /evdns.c
parent6d800fd6dbd3ca5e945937b00986b41e3bac99e7 (diff)
downloadlibevent-5c0e75c34e43743e57cd730383e3716ce9e3b519.tar.gz
Properly initialize sockaddr length on systems with sin_len.
Diffstat (limited to 'evdns.c')
-rw-r--r--evdns.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/evdns.c b/evdns.c
index 0f1c3595..782a4123 100644
--- a/evdns.c
+++ b/evdns.c
@@ -3325,6 +3325,9 @@ evdns_base_nameserver_add(struct evdns_base *base, unsigned long int address)
sin.sin_addr.s_addr = address;
sin.sin_port = htons(53);
sin.sin_family = AF_INET;
+#ifdef EVENT__HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
+ sin.sin_len = sizeof(sin);
+#endif
EVDNS_LOCK(base);
res = evdns_nameserver_add_impl_(base, (struct sockaddr*)&sin, sizeof(sin));
EVDNS_UNLOCK(base);
@@ -5421,6 +5424,9 @@ evdns_getaddrinfo_gotresolve(int result, char type, int count,
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_port = htons(data->port);
+#ifdef EVENT__HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
+ sin.sin_len = sizeof(sin);
+#endif
sa = (struct sockaddr *)&sin;
socklen = sizeof(sin);
@@ -5430,6 +5436,9 @@ evdns_getaddrinfo_gotresolve(int result, char type, int count,
memset(&sin6, 0, sizeof(sin6));
sin6.sin6_family = AF_INET6;
sin6.sin6_port = htons(data->port);
+#ifdef EVENT__HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN
+ sin6.sin6_len = sizeof(sin6);
+#endif
sa = (struct sockaddr *)&sin6;
socklen = sizeof(sin6);