diff options
| author | Bruce Momjian <bruce@momjian.us> | 2014-04-16 10:45:48 -0400 |
|---|---|---|
| committer | Bruce Momjian <bruce@momjian.us> | 2014-04-16 10:45:48 -0400 |
| commit | 41809346518a2b57530b22148609a346a718adc9 (patch) | |
| tree | 961b8f02438fed1b5a453890a899ff0351bb7f93 /src/backend | |
| parent | 848b9f05ab283724dd063d936a92568c1fdf422b (diff) | |
| download | postgresql-41809346518a2b57530b22148609a346a718adc9.tar.gz | |
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.c | 6 | ||||
| -rw-r--r-- | src/backend/libpq/ip.c | 10 | ||||
| -rw-r--r-- | src/backend/libpq/pqcomm.c | 4 | ||||
| -rw-r--r-- | src/backend/port/win32/socket.c | 2 | ||||
| -rw-r--r-- | src/backend/postmaster/postmaster.c | 2 |
5 files changed, 12 insertions, 12 deletions
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index d062c1d8ce..8fa9aa797f 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -1463,7 +1463,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(), @@ -1543,7 +1543,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); @@ -2361,7 +2361,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 7e8fc785bb..acdbab0049 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 1eae183e33..0179451f08 100644 --- a/src/backend/libpq/pqcomm.c +++ b/src/backend/libpq/pqcomm.c @@ -392,7 +392,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(), @@ -632,7 +632,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 4f1099f6cf..adc0e02335 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 bb771a63f2..b573fd82b6 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -2169,7 +2169,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; |
