aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2014-04-16 10:45:48 -0400
committerBruce Momjian <bruce@momjian.us>2014-04-16 10:45:48 -0400
commit966f015b60d90f6450cbadcbfa89e21408fe52f9 (patch)
tree2b1bcc74ac9cfbef514fb19cea89b3cf95a899d7 /src/backend
parenta4c4e0bf60f0f8dbe2556fabd94eb827ae376032 (diff)
downloadpostgresql-966f015b60d90f6450cbadcbfa89e21408fe52f9.tar.gz
postgresql-966f015b60d90f6450cbadcbfa89e21408fe52f9.zip
check socket creation errors against PGINVALID_SOCKET
Previously, in some places, socket creation errors were checked for negative values, which is not true for Windows because sockets are unsigned. This masked socket creation errors on Windows. Backpatch through 9.0. 8.4 doesn't have the infrastructure to fix this.
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/libpq/auth.c6
-rw-r--r--src/backend/libpq/ip.c10
-rw-r--r--src/backend/libpq/pqcomm.c4
-rw-r--r--src/backend/port/win32/socket.c2
-rw-r--r--src/backend/postmaster/postmaster.c2
5 files changed, 12 insertions, 12 deletions
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c
index c65427e53c4..a85f285e9f7 100644
--- a/src/backend/libpq/auth.c
+++ b/src/backend/libpq/auth.c
@@ -1673,7 +1673,7 @@ ident_inet(hbaPort *port)
sock_fd = socket(ident_serv->ai_family, ident_serv->ai_socktype,
ident_serv->ai_protocol);
- if (sock_fd < 0)
+ if (sock_fd == PGINVALID_SOCKET)
{
ereport(LOG,
(errcode_for_socket_access(),
@@ -1753,7 +1753,7 @@ ident_inet(hbaPort *port)
ident_response)));
ident_inet_done:
- if (sock_fd >= 0)
+ if (sock_fd != PGINVALID_SOCKET)
closesocket(sock_fd);
pg_freeaddrinfo_all(remote_addr.addr.ss_family, ident_serv);
pg_freeaddrinfo_all(local_addr.addr.ss_family, la);
@@ -2576,7 +2576,7 @@ CheckRADIUSAuth(Port *port)
packet->length = htons(packet->length);
sock = socket(serveraddrs[0].ai_family, SOCK_DGRAM, 0);
- if (sock < 0)
+ if (sock == PGINVALID_SOCKET)
{
ereport(LOG,
(errmsg("could not create RADIUS socket: %m")));
diff --git a/src/backend/libpq/ip.c b/src/backend/libpq/ip.c
index db3a5252efd..76d671303ed 100644
--- a/src/backend/libpq/ip.c
+++ b/src/backend/libpq/ip.c
@@ -547,7 +547,7 @@ pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data)
int error;
sock = WSASocket(AF_INET, SOCK_DGRAM, 0, 0, 0, 0);
- if (sock == SOCKET_ERROR)
+ if (sock == INVALID_SOCKET)
return -1;
while (n_ii < 1024)
@@ -670,7 +670,7 @@ pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data)
total;
sock = socket(AF_INET, SOCK_DGRAM, 0);
- if (sock == -1)
+ if (sock == PGINVALID_SOCKET)
return -1;
while (n_buffer < 1024 * 100)
@@ -711,7 +711,7 @@ pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data)
#ifdef HAVE_IPV6
/* We'll need an IPv6 socket too for the SIOCGLIFNETMASK ioctls */
sock6 = socket(AF_INET6, SOCK_DGRAM, 0);
- if (sock6 == -1)
+ if (sock6 == PGINVALID_SOCKET)
{
free(buffer);
close(sock);
@@ -788,10 +788,10 @@ pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data)
char *ptr,
*buffer = NULL;
size_t n_buffer = 1024;
- int sock;
+ pgsocket sock;
sock = socket(AF_INET, SOCK_DGRAM, 0);
- if (sock == -1)
+ if (sock == PGINVALID_SOCKET)
return -1;
while (n_buffer < 1024 * 100)
diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c
index d8a32ad7c2b..eb48aea9e93 100644
--- a/src/backend/libpq/pqcomm.c
+++ b/src/backend/libpq/pqcomm.c
@@ -363,7 +363,7 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
break;
}
- if ((fd = socket(addr->ai_family, SOCK_STREAM, 0)) < 0)
+ if ((fd = socket(addr->ai_family, SOCK_STREAM, 0)) == PGINVALID_SOCKET)
{
ereport(LOG,
(errcode_for_socket_access(),
@@ -606,7 +606,7 @@ StreamConnection(pgsocket server_fd, Port *port)
port->raddr.salen = sizeof(port->raddr.addr);
if ((port->sock = accept(server_fd,
(struct sockaddr *) & port->raddr.addr,
- &port->raddr.salen)) < 0)
+ &port->raddr.salen)) == PGINVALID_SOCKET)
{
ereport(LOG,
(errcode_for_socket_access(),
diff --git a/src/backend/port/win32/socket.c b/src/backend/port/win32/socket.c
index d9222231a1e..6d8c8494855 100644
--- a/src/backend/port/win32/socket.c
+++ b/src/backend/port/win32/socket.c
@@ -132,7 +132,7 @@ int
pgwin32_waitforsinglesocket(SOCKET s, int what, int timeout)
{
static HANDLE waitevent = INVALID_HANDLE_VALUE;
- static SOCKET current_socket = -1;
+ static SOCKET current_socket = INVALID_SOCKET;
static int isUDP = 0;
HANDLE events[2];
int r;
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 0b748ccfbe1..b0e67b554f0 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -1919,7 +1919,7 @@ ConnCreate(int serverFd)
if (StreamConnection(serverFd, port) != STATUS_OK)
{
- if (port->sock >= 0)
+ if (port->sock != PGINVALID_SOCKET)
StreamClose(port->sock);
ConnFree(port);
return NULL;