Unverified Commit b6e484dc authored by Howard Chu's avatar Howard Chu Committed by Daniel Stenberg
Browse files

openldap: fix for NULL return from ldap_get_attribute_ber()

Closes #2399
parent 22e56194
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -536,7 +536,7 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
    data->req.bytecount += bv.bv_len + 5;

    for(rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, &bvals);
        (rc == LDAP_SUCCESS) && bvals;
        rc == LDAP_SUCCESS;
        rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, &bvals)) {
      int i;

@@ -548,6 +548,27 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
      else
        binary = 0;

      if(bvals == NULL) {
        writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1);
        if(writeerr) {
          *err = writeerr;
          return -1;
        }
        writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)bv.bv_val,
                                     bv.bv_len);
        if(writeerr) {
          *err = writeerr;
          return -1;
        }
        writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)":\n", 2);
        if(writeerr) {
          *err = writeerr;
          return -1;
        }
        data->req.bytecount += bv.bv_len + 3;
        continue;
      }

      for(i = 0; bvals[i].bv_val != NULL; i++) {
        int binval = 0;
        writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1);