diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2014-08-20 14:00:38 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-09-02 14:47:28 +0200 |
commit | e6c56ab04e9b3669a7f7a87e49752c22d72e8e8a (patch) | |
tree | 242aa215c8ae6cfb609f5af2ffc6ad37aba75b68 /src/providers/ldap/sdap_async.c | |
parent | bc4b852c36ee6d36e12592c37e4e3bfe497f8c68 (diff) | |
download | sssd-e6c56ab04e9b3669a7f7a87e49752c22d72e8e8a.tar.gz sssd-e6c56ab04e9b3669a7f7a87e49752c22d72e8e8a.tar.xz sssd-e6c56ab04e9b3669a7f7a87e49752c22d72e8e8a.zip |
LDAP: Ignore returned referrals if referral support is disabled
Reviewed-by: Pavel Reichl <preichl@redhat.com>
(cherry picked from commit a2ea3f5d9ef9f17efbb61e942c2bc6cff7d1ebf2)
Diffstat (limited to 'src/providers/ldap/sdap_async.c')
-rw-r--r-- | src/providers/ldap/sdap_async.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/providers/ldap/sdap_async.c b/src/providers/ldap/sdap_async.c index 039510777..876fe74ed 100644 --- a/src/providers/ldap/sdap_async.c +++ b/src/providers/ldap/sdap_async.c @@ -1420,6 +1420,10 @@ static void sdap_get_generic_ext_done(struct sdap_op *op, ldap_memfree(errmsg); tevent_req_error(req, ENOTSUP); return; + } else if (result == LDAP_REFERRAL) { + ldap_memfree(errmsg); + tevent_req_error(req, ERR_REFERRAL); + return; } else if (result != LDAP_SUCCESS && result != LDAP_NO_SUCH_OBJECT) { DEBUG(SSSDBG_OP_FAILURE, "Unexpected result from ldap: %s(%d), %s\n", @@ -1582,11 +1586,18 @@ static void sdap_get_generic_done(struct tevent_req *subreq) { struct tevent_req *req = tevent_req_callback_data(subreq, struct tevent_req); + struct sdap_get_generic_state *state = + tevent_req_data(req, struct sdap_get_generic_state); int ret; ret = sdap_get_generic_ext_recv(subreq); talloc_zfree(subreq); - if (ret) { + if (ret == ERR_REFERRAL) { + if (dp_opt_get_bool(state->opts->basic, SDAP_REFERRALS)) { + tevent_req_error(req, ret); + return; + } + } else if (ret) { DEBUG(SSSDBG_CONF_SETTINGS, "sdap_get_generic_ext_recv failed [%d]: %s\n", ret, sss_strerror(ret)); |