From: sparked435 <9814958+sparked435@users.noreply.github.com> Date: Fri, 30 Dec 2022 17:19:16 +0000 (-0500) Subject: Pass precise size of struct sockaddr, whichever type of struct sockaddr, to getnamein... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b47aea1400b44d4b87b5709901fd2f2fb037b699;p=thirdparty%2Fcollectd.git Pass precise size of struct sockaddr, whichever type of struct sockaddr, to getnameinfo() on NetBSD. --- diff --git a/src/network.c b/src/network.c index 8a6c74d38..39e534a2a 100644 --- a/src/network.c +++ b/src/network.c @@ -443,8 +443,17 @@ static int network_dispatch_values(value_list_t *vl, /* {{{ */ if (address != NULL) { char host[48]; - status = getnameinfo((struct sockaddr *)address, - sizeof(struct sockaddr_storage), host, sizeof(host), + size_t len = sizeof(struct sockaddr_storage); + +#ifdef __NetBSD__ + if (address->ss_family == AF_INET) { + len = sizeof(struct sockaddr_in); + } else if (address->ss_family == AF_INET6) { + len = sizeof(struct sockaddr_in6); + } +#endif + + status = getnameinfo((struct sockaddr *)address, len, host, sizeof(host), NULL, 0, NI_NUMERICHOST | NI_NUMERICSERV); if (status != 0) { ERROR("network plugin: getnameinfo failed: %s", gai_strerror(status));