Author: rhs Date: Wed Oct 15 15:31:20 2014 New Revision: 1632092 URL: http://svn.apache.org/r1632092 Log: PROTON-712: check getprotobyname for NULL return value (patch from Sahir Hoda)
Modified: qpid/proton/trunk/proton-c/src/posix/io.c qpid/proton/trunk/proton-c/src/windows/io.c Modified: qpid/proton/trunk/proton-c/src/posix/io.c URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/posix/io.c?rev=1632092&r1=1632091&r2=1632092&view=diff ============================================================================== --- qpid/proton/trunk/proton-c/src/posix/io.c (original) +++ qpid/proton/trunk/proton-c/src/posix/io.c Wed Oct 15 15:31:20 2014 @@ -228,7 +228,11 @@ ssize_t pn_send(pn_io_t *io, pn_socket_t } static inline int pn_create_socket(int af) { - return socket(af, SOCK_STREAM, getprotobyname("tcp")->p_proto); + struct protoent * pe_tcp = getprotobyname("tcp"); + if (pe_tcp == NULL) { + return -1; + } + return socket(af, SOCK_STREAM, pe_tcp->p_proto); } #elif defined(SO_NOSIGPIPE) ssize_t pn_send(pn_io_t *io, pn_socket_t socket, const void *buf, size_t size) { @@ -238,7 +242,13 @@ ssize_t pn_send(pn_io_t *io, pn_socket_t } static inline int pn_create_socket(int af) { - int sock = socket(af, SOCK_STREAM, getprotobyname("tcp")->p_proto); + struct protoent * pe_tcp; + int sock; + pe_tcp = getprotobyname("tcp"); + if (pe_tcp == NULL) { + return -1; + } + sock = socket(af, SOCK_STREAM, pe_tcp->p_proto); if (sock == -1) return sock; int optval = 1; Modified: qpid/proton/trunk/proton-c/src/windows/io.c URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/windows/io.c?rev=1632092&r1=1632091&r2=1632092&view=diff ============================================================================== --- qpid/proton/trunk/proton-c/src/windows/io.c (original) +++ qpid/proton/trunk/proton-c/src/windows/io.c Wed Oct 15 15:31:20 2014 @@ -302,7 +302,11 @@ pn_socket_t pn_accept(pn_io_t *io, pn_so } static inline pn_socket_t pni_create_socket() { - return socket(AF_INET, SOCK_STREAM, getprotobyname("tcp")->p_proto); + struct protoent * pe_tcp = getprotobyname("tcp"); + if (pe_tcp == NULL) { + return -1; + } + return socket(AF_INET, SOCK_STREAM, pe_tcp->p_proto); } ssize_t pn_send(pn_io_t *io, pn_socket_t sockfd, const void *buf, size_t len) { @@ -375,8 +379,13 @@ static void configure_pipe_socket(pn_io_ static int pni_socket_pair (pn_io_t *io, SOCKET sv[2]) { // no socketpair on windows. provide pipe() semantics using sockets + struct protoent * pe_tcp = getprotobyname("tcp"); + if (pe_tcp == NULL) { + perror("getprotobyname"); + return -1; + } - SOCKET sock = socket(AF_INET, SOCK_STREAM, getprotobyname("tcp")->p_proto); + SOCKET sock = socket(AF_INET, SOCK_STREAM, pe_tcp->p_proto); if (sock == INVALID_SOCKET) { perror("socket"); return -1; @@ -407,7 +416,7 @@ static int pni_socket_pair (pn_io_t *io, return -1; } - if ((sv[1] = socket(AF_INET, SOCK_STREAM, getprotobyname("tcp")->p_proto)) == INVALID_SOCKET) { + if ((sv[1] = socket(AF_INET, SOCK_STREAM, pe_tcp->p_proto)) == INVALID_SOCKET) { perror("sock1"); closesocket(sock); return -1; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org