From b47aea1400b44d4b87b5709901fd2f2fb037b699 Mon Sep 17 00:00:00 2001 From: sparked435 <9814958+sparked435@users.noreply.github.com> Date: Fri, 30 Dec 2022 12:19:16 -0500 Subject: [PATCH] Pass precise size of struct sockaddr, whichever type of struct sockaddr, to getnameinfo() on NetBSD. --- src/network.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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)); -- 2.47.2