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 3000b1735d0..5f74c05a65d 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 c28809fad68..d3221a13139 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 6b367644f90..3d536a16629 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 b5c03d912b0..ff527952ab9 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 a3cd7d26fae..937ddb7ef08 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 fa5af18ffac..7f1fd2f45eb 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 536c5f686e2..9e5829b6dd2 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 67aff110da5..b8ad69c3909 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