From 927f34ce8a215c8b254136f710cca9ca4da1352c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 18 Aug 2019 19:27:23 -0400 Subject: [PATCH] Avoid conflicts with library versions of inet_net_ntop() and friends. Prefix inet_net_ntop and sibling routines with "pg_" to ensure that they aren't mistaken for C-library functions. This fixes warnings from cpluspluscheck on some platforms, and should help reduce reader confusion everywhere, since our functions aren't exactly interchangeable with the library versions (they may have different ideas about address family codes). This shouldn't be fixing any actual bugs, unless somebody's linker is misbehaving, so no need to back-patch. Discussion: https://postgr.es/m/20518.1559494394@sss.pgh.pa.us --- src/backend/utils/adt/inet_cidr_ntop.c | 4 ++-- src/backend/utils/adt/inet_net_pton.c | 6 +++--- src/backend/utils/adt/network.c | 24 ++++++++++++------------ src/include/port.h | 4 ++-- src/include/utils/builtins.h | 8 ++++---- src/interfaces/libpq/fe-connect.c | 16 ++++++++-------- src/port/getaddrinfo.c | 7 ++++--- src/port/inet_net_ntop.c | 8 ++++---- 8 files changed, 39 insertions(+), 38 deletions(-) diff --git a/src/backend/utils/adt/inet_cidr_ntop.c b/src/backend/utils/adt/inet_cidr_ntop.c index 3000b1735d..5f74c05a65 100644 --- a/src/backend/utils/adt/inet_cidr_ntop.c +++ b/src/backend/utils/adt/inet_cidr_ntop.c @@ -44,7 +44,7 @@ static char *inet_cidr_ntop_ipv6(const u_char *src, int bits, /* * char * - * inet_cidr_ntop(af, src, bits, dst, size) + * pg_inet_cidr_ntop(af, src, bits, dst, size) * convert network number from network to presentation format. * generates CIDR style result always. * return: @@ -53,7 +53,7 @@ static char *inet_cidr_ntop_ipv6(const u_char *src, int bits, * Paul Vixie (ISC), July 1996 */ char * -inet_cidr_ntop(int af, const void *src, int bits, char *dst, size_t size) +pg_inet_cidr_ntop(int af, const void *src, int bits, char *dst, size_t size) { switch (af) { diff --git a/src/backend/utils/adt/inet_net_pton.c b/src/backend/utils/adt/inet_net_pton.c index c28809fad6..d3221a1313 100644 --- a/src/backend/utils/adt/inet_net_pton.c +++ b/src/backend/utils/adt/inet_net_pton.c @@ -42,7 +42,7 @@ static int inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size); /* * int - * inet_net_pton(af, src, dst, size) + * pg_inet_net_pton(af, src, dst, size) * convert network number from presentation to network format. * accepts hex octets, hex strings, decimal octets, and /CIDR. * "size" is in bytes and describes "dst". @@ -59,7 +59,7 @@ static int inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size); * */ int -inet_net_pton(int af, const char *src, void *dst, size_t size) +pg_inet_net_pton(int af, const char *src, void *dst, size_t size) { switch (af) { @@ -241,7 +241,7 @@ emsgsize: /* * int - * inet_net_pton(af, src, dst, *bits) + * inet_net_pton_ipv4(af, src, dst, *bits) * convert network address from presentation to network format. * accepts inet_pton()'s input for this "af" plus trailing "/CIDR". * "dst" is assumed large enough for its "af". "bits" is set to the diff --git a/src/backend/utils/adt/network.c b/src/backend/utils/adt/network.c index 6b367644f9..3d536a1662 100644 --- a/src/backend/utils/adt/network.c +++ b/src/backend/utils/adt/network.c @@ -91,8 +91,8 @@ network_in(char *src, bool is_cidr) else ip_family(dst) = PGSQL_AF_INET; - bits = inet_net_pton(ip_family(dst), src, ip_addr(dst), - is_cidr ? ip_addrsize(dst) : -1); + bits = pg_inet_net_pton(ip_family(dst), src, ip_addr(dst), + is_cidr ? ip_addrsize(dst) : -1); if ((bits < 0) || (bits > ip_maxbits(dst))) ereport(ERROR, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), @@ -145,8 +145,8 @@ network_out(inet *src, bool is_cidr) char *dst; int len; - dst = inet_net_ntop(ip_family(src), ip_addr(src), ip_bits(src), - tmp, sizeof(tmp)); + dst = pg_inet_net_ntop(ip_family(src), ip_addr(src), ip_bits(src), + tmp, sizeof(tmp)); if (dst == NULL) ereport(ERROR, (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION), @@ -1192,8 +1192,8 @@ network_host(PG_FUNCTION_ARGS) char tmp[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128")]; /* force display of max bits, regardless of masklen... */ - if (inet_net_ntop(ip_family(ip), ip_addr(ip), ip_maxbits(ip), - tmp, sizeof(tmp)) == NULL) + if (pg_inet_net_ntop(ip_family(ip), ip_addr(ip), ip_maxbits(ip), + tmp, sizeof(tmp)) == NULL) ereport(ERROR, (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION), errmsg("could not format inet value: %m"))); @@ -1217,8 +1217,8 @@ network_show(PG_FUNCTION_ARGS) int len; char tmp[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128")]; - if (inet_net_ntop(ip_family(ip), ip_addr(ip), ip_maxbits(ip), - tmp, sizeof(tmp)) == NULL) + if (pg_inet_net_ntop(ip_family(ip), ip_addr(ip), ip_maxbits(ip), + tmp, sizeof(tmp)) == NULL) ereport(ERROR, (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION), errmsg("could not format inet value: %m"))); @@ -1240,8 +1240,8 @@ inet_abbrev(PG_FUNCTION_ARGS) char *dst; char tmp[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128")]; - dst = inet_net_ntop(ip_family(ip), ip_addr(ip), - ip_bits(ip), tmp, sizeof(tmp)); + dst = pg_inet_net_ntop(ip_family(ip), ip_addr(ip), + ip_bits(ip), tmp, sizeof(tmp)); if (dst == NULL) ereport(ERROR, @@ -1258,8 +1258,8 @@ cidr_abbrev(PG_FUNCTION_ARGS) char *dst; char tmp[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128")]; - dst = inet_cidr_ntop(ip_family(ip), ip_addr(ip), - ip_bits(ip), tmp, sizeof(tmp)); + dst = pg_inet_cidr_ntop(ip_family(ip), ip_addr(ip), + ip_bits(ip), tmp, sizeof(tmp)); if (dst == NULL) ereport(ERROR, diff --git a/src/include/port.h b/src/include/port.h index b5c03d912b..ff527952ab 100644 --- a/src/include/port.h +++ b/src/include/port.h @@ -503,8 +503,8 @@ extern int pg_codepage_to_encoding(UINT cp); #endif /* port/inet_net_ntop.c */ -extern char *inet_net_ntop(int af, const void *src, int bits, - char *dst, size_t size); +extern char *pg_inet_net_ntop(int af, const void *src, int bits, + char *dst, size_t size); /* port/pg_strong_random.c */ extern bool pg_strong_random(void *buf, size_t len); diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h index a3cd7d26fa..937ddb7ef0 100644 --- a/src/include/utils/builtins.h +++ b/src/include/utils/builtins.h @@ -87,12 +87,12 @@ extern void text_to_cstring_buffer(const text *src, char *dst, size_t dst_len); extern int xidComparator(const void *arg1, const void *arg2); /* inet_cidr_ntop.c */ -extern char *inet_cidr_ntop(int af, const void *src, int bits, - char *dst, size_t size); +extern char *pg_inet_cidr_ntop(int af, const void *src, int bits, + char *dst, size_t size); /* inet_net_pton.c */ -extern int inet_net_pton(int af, const char *src, - void *dst, size_t size); +extern int pg_inet_net_pton(int af, const char *src, + void *dst, size_t size); /* network.c */ extern double convert_network_to_scalar(Datum value, Oid typid, bool *failure); diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index fa5af18ffa..7f1fd2f45e 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -1539,19 +1539,19 @@ getHostaddr(PGconn *conn, char *host_addr, int host_addr_len) if (addr->ss_family == AF_INET) { - if (inet_net_ntop(AF_INET, - &((struct sockaddr_in *) addr)->sin_addr.s_addr, - 32, - host_addr, host_addr_len) == NULL) + if (pg_inet_net_ntop(AF_INET, + &((struct sockaddr_in *) addr)->sin_addr.s_addr, + 32, + host_addr, host_addr_len) == NULL) host_addr[0] = '\0'; } #ifdef HAVE_IPV6 else if (addr->ss_family == AF_INET6) { - if (inet_net_ntop(AF_INET6, - &((struct sockaddr_in6 *) addr)->sin6_addr.s6_addr, - 128, - host_addr, host_addr_len) == NULL) + if (pg_inet_net_ntop(AF_INET6, + &((struct sockaddr_in6 *) addr)->sin6_addr.s6_addr, + 128, + host_addr, host_addr_len) == NULL) host_addr[0] = '\0'; } #endif diff --git a/src/port/getaddrinfo.c b/src/port/getaddrinfo.c index 536c5f686e..9e5829b6dd 100644 --- a/src/port/getaddrinfo.c +++ b/src/port/getaddrinfo.c @@ -387,9 +387,10 @@ getnameinfo(const struct sockaddr *sa, int salen, { if (sa->sa_family == AF_INET) { - if (inet_net_ntop(AF_INET, &((struct sockaddr_in *) sa)->sin_addr, - sa->sa_family == AF_INET ? 32 : 128, - node, nodelen) == NULL) + if (pg_inet_net_ntop(AF_INET, + &((struct sockaddr_in *) sa)->sin_addr, + sa->sa_family == AF_INET ? 32 : 128, + node, nodelen) == NULL) return EAI_MEMORY; } else diff --git a/src/port/inet_net_ntop.c b/src/port/inet_net_ntop.c index 67aff110da..b8ad69c390 100644 --- a/src/port/inet_net_ntop.c +++ b/src/port/inet_net_ntop.c @@ -36,7 +36,7 @@ static const char rcsid[] = "Id: inet_net_ntop.c,v 1.1.2.2 2004/03/09 09:17:27 m #else /* * In a frontend build, we can't include inet.h, but we still need to have - * sensible definitions of these two constants. Note that inet_net_ntop() + * sensible definitions of these two constants. Note that pg_inet_net_ntop() * assumes that PGSQL_AF_INET is equal to AF_INET. */ #define PGSQL_AF_INET (AF_INET + 0) @@ -61,20 +61,20 @@ static char *inet_net_ntop_ipv6(const u_char *src, int bits, /* * char * - * inet_net_ntop(af, src, bits, dst, size) + * pg_inet_net_ntop(af, src, bits, dst, size) * convert host/network address from network to presentation format. * "src"'s size is determined from its "af". * return: * pointer to dst, or NULL if an error occurred (check errno). * note: * 192.5.5.1/28 has a nonzero host part, which means it isn't a network - * as called for by inet_net_pton() but it can be a host address with + * as called for by pg_inet_net_pton() but it can be a host address with * an included netmask. * author: * Paul Vixie (ISC), October 1998 */ char * -inet_net_ntop(int af, const void *src, int bits, char *dst, size_t size) +pg_inet_net_ntop(int af, const void *src, int bits, char *dst, size_t size) { /* * We need to cover both the address family constants used by the PG inet