diff options
author | Daniel Stenberg <daniel@haxx.se> | 2011-03-16 00:16:34 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2011-03-16 00:16:34 +0100 |
commit | b8118dd49589f2ccfc7c3ef4ff4dacf994614333 (patch) | |
tree | 90446cfb818669ddbc57c25ba37be0fb6e20b94e /lib | |
parent | 025b9368f8d37f560f8dcd7503eb02a1701172a1 (diff) |
ldap_recv: check return code from ldap_get_dn_ber
Diffstat (limited to 'lib')
-rw-r--r-- | lib/openldap.c | 9 |
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); |