ports/databases/postgresql/patches/patch-src_backend_libpq_ip_c

30 lines
866 B
Text
Raw Normal View History

2023-08-16 22:26:55 +00:00
Use the address family from the address, not from the netmask,
since the latter is unreliable. Fixes "samenet"/"samehost".
Index: src/backend/libpq/ifaddr.c
--- src/backend/libpq/ifaddr.c.orig
+++ src/backend/libpq/ifaddr.c
@@ -200,17 +200,16 @@ run_ifaddr_callback(PgIfAddrCallback callback, void *c
/* Check that the mask is valid */
if (mask)
{
- if (mask->sa_family != addr->sa_family)
+
+ /* mask->sa_family can be different from addr->sa_family. */
+
+ if (addr->sa_family == AF_INET)
{
- mask = NULL;
- }
- else if (mask->sa_family == AF_INET)
- {
if (((struct sockaddr_in *) mask)->sin_addr.s_addr == INADDR_ANY)
mask = NULL;
}
#ifdef HAVE_IPV6
- else if (mask->sa_family == AF_INET6)
+ else if (addr->sa_family == AF_INET6)
{
if (IN6_IS_ADDR_UNSPECIFIED(&((struct sockaddr_in6 *) mask)->sin6_addr))
mask = NULL;