summaryrefslogtreecommitdiff
path: root/lib/openldap.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2011-03-16 00:16:34 +0100
committerDaniel Stenberg <daniel@haxx.se>2011-03-16 00:16:34 +0100
commitb8118dd49589f2ccfc7c3ef4ff4dacf994614333 (patch)
tree90446cfb818669ddbc57c25ba37be0fb6e20b94e /lib/openldap.c
parent025b9368f8d37f560f8dcd7503eb02a1701172a1 (diff)
downloadcurl-b8118dd49589f2ccfc7c3ef4ff4dacf994614333.tar.gz
ldap_recv: check return code from ldap_get_dn_ber
Diffstat (limited to 'lib/openldap.c')
-rw-r--r--lib/openldap.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/openldap.c b/lib/openldap.c
index ec723beb2..dd008800a 100644
--- a/lib/openldap.c
+++ b/lib/openldap.c
@@ -465,7 +465,8 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
char *info = NULL;
rc = ldap_parse_result(li->ld, ent, &code, NULL, &info, NULL, NULL, 0);
if (rc) {
- failf(data, "LDAP local: search ldap_parse_result %s", ldap_err2string(rc));
+ failf(data, "LDAP local: search ldap_parse_result %s",
+ ldap_err2string(rc));
*err = CURLE_LDAP_SEARCH_FAILED;
} else if (code && code != LDAP_SIZELIMIT_EXCEEDED) {
failf(data, "LDAP remote: search failed %s %s", ldap_err2string(rc),
@@ -488,6 +489,12 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
lr->nument++;
rc = ldap_get_dn_ber(li->ld, ent, &ber, &bv);
+ if(rc < 0) {
+ /* TODO: verify that this is really how this return code should be
+ handled */
+ *err = CURLE_RECV_ERROR;
+ return -1;
+ }
Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"DN: ", 4);
Curl_client_write(conn, CLIENTWRITE_BODY, (char *)bv.bv_val, bv.bv_len);
Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);