diff options
author | Simo Sorce <ssorce@redhat.com> | 2010-04-29 12:30:05 -0400 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2010-05-03 13:52:10 -0400 |
commit | 270a0a1b6182ef1fbff2a93af6731788cf954874 (patch) | |
tree | cedb35b32d4f4d22c6cf20905061d6fd58887cea /src/providers/ipa | |
parent | 68796aa0ae2641e2bfe5fe10a703bc705d10e9d4 (diff) | |
download | sssd-270a0a1b6182ef1fbff2a93af6731788cf954874.tar.gz sssd-270a0a1b6182ef1fbff2a93af6731788cf954874.tar.bz2 sssd-270a0a1b6182ef1fbff2a93af6731788cf954874.zip |
Better handle sdap_handle memory from callers.
Always just mark the sdap_handle as not connected and let later _send()
functions to take care of freeing the handle before reconnecting.
Introduce restart functions to avoid calling _send() functions in _done()
functions error paths as this would have the same effect as directly freeing
the sdap_handle and cause access to freed memory in sdap_handle_release()
By freeing sdap_handle only in the connection _recv() function we
guarantee it can never be done within sdap_handle_release() but only
in a following event.
Diffstat (limited to 'src/providers/ipa')
-rw-r--r-- | src/providers/ipa/ipa_access.c | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/src/providers/ipa/ipa_access.c b/src/providers/ipa/ipa_access.c index a7058bad..d88e5c93 100644 --- a/src/providers/ipa/ipa_access.c +++ b/src/providers/ipa/ipa_access.c @@ -325,10 +325,6 @@ static struct tevent_req *hbac_get_host_info_send(TALLOC_CTX *memctx, } if (sdap_ctx->gsh == NULL || ! sdap_ctx->gsh->connected) { - if (sdap_ctx->gsh != NULL) { - talloc_zfree(sdap_ctx->gsh); - } - subreq = sdap_cli_connect_send(state, ev, sdap_ctx->opts, sdap_ctx->be, sdap_ctx->service, NULL); if (!subreq) { @@ -780,10 +776,6 @@ static struct tevent_req *hbac_get_rules_send(TALLOC_CTX *memctx, } if (sdap_ctx->gsh == NULL || ! sdap_ctx->gsh->connected) { - if (sdap_ctx->gsh != NULL) { - talloc_zfree(sdap_ctx->gsh); - } - subreq = sdap_cli_connect_send(state, ev, sdap_ctx->opts, sdap_ctx->be, sdap_ctx->service, NULL); if (!subreq) { |