1
0
mirror of https://github.com/moparisthebest/curl synced 2024-08-13 17:03:50 -04:00

openldap: fix for NULL return from ldap_get_attribute_ber()

Closes #2399
This commit is contained in:
Howard Chu 2018-03-18 18:13:27 +00:00 committed by Daniel Stenberg
parent 22e56194e3
commit b6e484dc36
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -536,7 +536,7 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
data->req.bytecount += bv.bv_len + 5; data->req.bytecount += bv.bv_len + 5;
for(rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, &bvals); 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)) { rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, &bvals)) {
int i; int i;
@ -548,6 +548,27 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
else else
binary = 0; 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++) { for(i = 0; bvals[i].bv_val != NULL; i++) {
int binval = 0; int binval = 0;
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1); writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1);