Commit 7296fc9e authored by Marc Hoersken's avatar Marc Hoersken
Browse files

connect.c: fix multiple possible dereferences of null pointers

In case the first address in the tempaddr array is NULL,
the code would previously dereference an unchecked null pointer.
parent 3f74e149
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -545,7 +545,7 @@ static CURLcode trynextip(struct connectdata *conn,
  conn->tempsock[tempindex] = CURL_SOCKET_BAD;

  if(sockindex == FIRSTSOCKET) {
    Curl_addrinfo *ai;
    Curl_addrinfo *ai = NULL;
    int family;

    if(conn->tempaddr[tempindex]) {
@@ -553,7 +553,7 @@ static CURLcode trynextip(struct connectdata *conn,
      family = conn->tempaddr[tempindex]->ai_family;
      ai = conn->tempaddr[tempindex]->ai_next;
    }
    else {
    else if(conn->tempaddr[0]) {
      /* happy eyeballs - try the other protocol family */
      int firstfamily = conn->tempaddr[0]->ai_family;
#ifdef ENABLE_IPV6
@@ -811,6 +811,7 @@ CURLcode Curl_is_connected(struct connectdata *conn,
      char ipaddress[MAX_IPADR_LEN];
      data->state.os_errno = error;
      SET_SOCKERRNO(error);
      if(conn->tempaddr[i]) {
        Curl_printable_address(conn->tempaddr[i], ipaddress, MAX_IPADR_LEN);
        infof(data, "connect to %s port %ld failed: %s\n",
              ipaddress, conn->port, Curl_strerror(conn, error));
@@ -821,6 +822,7 @@ CURLcode Curl_is_connected(struct connectdata *conn,
        code = trynextip(conn, sockindex, i);
      }
    }
  }

  if(code) {
    /* no more addresses to try */