diff options
Diffstat (limited to 'src/backend/libpq/hba.c')
-rw-r--r-- | src/backend/libpq/hba.c | 42 |
1 files changed, 6 insertions, 36 deletions
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c index 8c8213448a8..a0f53960361 100644 --- a/src/backend/libpq/hba.c +++ b/src/backend/libpq/hba.c @@ -680,42 +680,12 @@ check_hostname(hbaPort *port, const char *hostname) static bool check_ip(SockAddr *raddr, struct sockaddr * addr, struct sockaddr * mask) { - if (raddr->addr.ss_family == addr->sa_family) - { - /* Same address family */ - if (!pg_range_sockaddr(&raddr->addr, - (struct sockaddr_storage *) addr, - (struct sockaddr_storage *) mask)) - return false; - } -#ifdef HAVE_IPV6 - else if (addr->sa_family == AF_INET && - raddr->addr.ss_family == AF_INET6) - { - /* - * If we're connected on IPv6 but the file specifies an IPv4 address - * to match against, promote the latter to an IPv6 address before - * trying to match the client's address. - */ - struct sockaddr_storage addrcopy, - maskcopy; - - memcpy(&addrcopy, addr, sizeof(addrcopy)); - memcpy(&maskcopy, mask, sizeof(maskcopy)); - pg_promote_v4_to_v6_addr(&addrcopy); - pg_promote_v4_to_v6_mask(&maskcopy); - - if (!pg_range_sockaddr(&raddr->addr, &addrcopy, &maskcopy)) - return false; - } -#endif /* HAVE_IPV6 */ - else - { - /* Wrong address family, no IPV6 */ - return false; - } - - return true; + if (raddr->addr.ss_family == addr->sa_family && + pg_range_sockaddr(&raddr->addr, + (struct sockaddr_storage *) addr, + (struct sockaddr_storage *) mask)) + return true; + return false; } /* |