]> granicus.if.org Git - libevent/commitdiff
Properly initialize sockaddr length on systems with sin_len.
authorTobias Heider <tobias.heider@stusta.de>
Tue, 6 Jul 2021 15:40:58 +0000 (17:40 +0200)
committerTobias Heider <tobias.heider@stusta.de>
Mon, 12 Jul 2021 11:52:59 +0000 (13:52 +0200)
evdns.c

diff --git a/evdns.c b/evdns.c
index 0f1c359582e3dcbde3cf5288d0577feaf421c2bc..782a4123e6b5da6e43a11f724d0a7fb5f930935c 100644 (file)
--- 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);