diff options
author | Sumit Bose <sbose@redhat.com> | 2013-10-18 15:54:22 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-10-22 23:56:00 +0200 |
commit | 97139975c91bcd5015141d5c18178df927b91b73 (patch) | |
tree | 94882613a15cef9fc0e0001f80b7550f30fa4043 | |
parent | 48323e596876a5b4a6c493aede44b3db7df23164 (diff) | |
download | sssd-97139975c91bcd5015141d5c18178df927b91b73.tar.gz sssd-97139975c91bcd5015141d5c18178df927b91b73.tar.xz sssd-97139975c91bcd5015141d5c18178df927b91b73.zip |
sdap_get_generic_ext_send: check if we a re still connectedsssd-1.9.2-129.el6
At the beginning of a LDAP request we check if we are connecte and have
a valid sdap handle. But for some requests more than one LDAP operation,
typically a search, is needed. Due to the asynchronous handling of LDAP
request it might be possible that a second request might detect a server
error and close the connection while the first request just finished one
LDAP search and wants to start a new LDAP search.
This patch tries to make sure that there is a valid sdap handle before
sending a LDAP search to the server.
Fixes https://fedorahosted.org/sssd/ticket/2126
-rw-r--r-- | src/providers/ldap/sdap_async.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/providers/ldap/sdap_async.c b/src/providers/ldap/sdap_async.c index 2ab61532e..14f8e32c5 100644 --- a/src/providers/ldap/sdap_async.c +++ b/src/providers/ldap/sdap_async.c @@ -1177,6 +1177,13 @@ sdap_get_generic_ext_send(TALLOC_CTX *memctx, state->cb_data = cb_data; state->clientctrls = clientctrls; + if (state->sh == NULL || state->sh->ldap == NULL) { + DEBUG(SSSDBG_CRIT_FAILURE, + ("Trying LDAP search while not connected.\n")); + tevent_req_error(req, EIO); + tevent_req_post(req, ev); + return req; + } /* Be extra careful and never allow paging for BASE searches, * even if requested. |