diff options
author | Tobias Heider <tobias.heider@stusta.de> | 2021-07-06 17:40:58 +0200 |
---|---|---|
committer | Tobias Heider <tobias.heider@stusta.de> | 2021-07-12 13:52:59 +0200 |
commit | 5c0e75c34e43743e57cd730383e3716ce9e3b519 (patch) | |
tree | 61bcf7b9b197ba978f6cf3c2b664c616e79728e9 /evdns.c | |
parent | 6d800fd6dbd3ca5e945937b00986b41e3bac99e7 (diff) | |
download | libevent-5c0e75c34e43743e57cd730383e3716ce9e3b519.tar.gz |
Properly initialize sockaddr length on systems with sin_len.
Diffstat (limited to 'evdns.c')
-rw-r--r-- | evdns.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -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); |