Print this page
SUS-56 libstmfproxy incorrectly checks socket() return code


  64 }
  65 
  66 static ssize_t
  67 pt_socket_send(void *handle, void *buf, size_t len)
  68 {
  69         s_handle_t *sh = handle;
  70 
  71         return (send(sh->sockfd, buf, len, 0));
  72 }
  73 
  74 static void *
  75 pt_socket_connect(int server_node, char *server)
  76 {
  77         int sfd, new_sfd;
  78         s_handle_t *sh = NULL;
  79         int on = 1;
  80         struct sockaddr_in cli_addr, serv_addr;
  81         struct  sockaddr_in sin;
  82         int cliLen = sizeof (cli_addr);
  83 
  84         if ((sfd = socket(AF_INET, SOCK_STREAM, 0)) <= 0) {
  85                 syslog(LOG_DAEMON|LOG_WARNING,
  86                     "socket() call failed: %d", errno);
  87                 return (NULL);
  88         }
  89 
  90         if (server_node) {
  91 
  92                 if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &on,
  93                     sizeof (on)) < 0) {
  94                         syslog(LOG_DAEMON|LOG_WARNING,
  95                             "setsockopt() failed: %d", errno);
  96                         goto serv_out;
  97                 }
  98 
  99                 bzero(&serv_addr, sizeof (serv_addr));
 100                 serv_addr.sin_family = AF_INET;
 101                 serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
 102                 /* XXX get from smf? */
 103                 serv_addr.sin_port = htons(6543);
 104 




  64 }
  65 
  66 static ssize_t
  67 pt_socket_send(void *handle, void *buf, size_t len)
  68 {
  69         s_handle_t *sh = handle;
  70 
  71         return (send(sh->sockfd, buf, len, 0));
  72 }
  73 
  74 static void *
  75 pt_socket_connect(int server_node, char *server)
  76 {
  77         int sfd, new_sfd;
  78         s_handle_t *sh = NULL;
  79         int on = 1;
  80         struct sockaddr_in cli_addr, serv_addr;
  81         struct  sockaddr_in sin;
  82         int cliLen = sizeof (cli_addr);
  83 
  84         if ((sfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
  85                 syslog(LOG_DAEMON|LOG_WARNING,
  86                     "socket() call failed: %d", errno);
  87                 return (NULL);
  88         }
  89 
  90         if (server_node) {
  91 
  92                 if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &on,
  93                     sizeof (on)) < 0) {
  94                         syslog(LOG_DAEMON|LOG_WARNING,
  95                             "setsockopt() failed: %d", errno);
  96                         goto serv_out;
  97                 }
  98 
  99                 bzero(&serv_addr, sizeof (serv_addr));
 100                 serv_addr.sin_family = AF_INET;
 101                 serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
 102                 /* XXX get from smf? */
 103                 serv_addr.sin_port = htons(6543);
 104