From 6299bdbf043354d7f66d9a0630b7d03fd7e2d85b Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Sat, 26 Oct 2024 15:51:30 -0400 Subject: [PATCH] src/common: return -1 from get_addr on error getaddrinfo will typically return negative values for errors, but this is not the case for all systems. For example, glibc defines the errors as negative, but the WSA equivalents are all positive. This commit unifies the approach within iodine by always returning -1 in the event getaddrinfo is unsuccessful. --- src/common.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/common.c b/src/common.c index 8d2fec0..e7d49c3 100644 --- a/src/common.c +++ b/src/common.c @@ -142,6 +142,7 @@ get_addr(char *host, int port, int addr_family, int flags, struct sockaddr_stora struct addrinfo hints, *addr; int res; char portnum[8]; + int addrlen; memset(portnum, 0, sizeof(portnum)); snprintf(portnum, sizeof(portnum) - 1, "%d", port); @@ -158,14 +159,15 @@ get_addr(char *host, int port, int addr_family, int flags, struct sockaddr_stora hints.ai_protocol = IPPROTO_UDP; res = getaddrinfo(host, portnum, &hints, &addr); - if (res == 0) { - int addrlen = addr->ai_addrlen; - /* Grab first result */ - memcpy(out, addr->ai_addr, addr->ai_addrlen); - freeaddrinfo(addr); - return addrlen; + if (res != 0) { + return -1; } - return res; + + addrlen = addr->ai_addrlen; + /* Grab first result */ + memcpy(out, addr->ai_addr, addr->ai_addrlen); + freeaddrinfo(addr); + return addrlen; } int