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

Reply via email to