diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2012-02-09 11:30:03 +0100 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2012-02-10 13:30:01 -0500 |
commit | 08207cb57473192c99893938fd60dc6a6ff90eb0 (patch) | |
tree | e1e8c95ded5a34c4a4da947e3f3d12897ee357f1 /src | |
parent | 04d27ffd7c52f7519b25ff8b8896a901c0439898 (diff) | |
download | sssd-08207cb57473192c99893938fd60dc6a6ff90eb0.tar.gz sssd-08207cb57473192c99893938fd60dc6a6ff90eb0.tar.xz sssd-08207cb57473192c99893938fd60dc6a6ff90eb0.zip |
Fix group enumeration
Also adds some more debugging and fixes a code style issue.
https://fedorahosted.org/sssd/ticket/1182
Diffstat (limited to 'src')
-rw-r--r-- | src/responder/common/responder_dp.c | 9 | ||||
-rw-r--r-- | src/responder/nss/nsssrv_cmd.c | 2 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/responder/common/responder_dp.c b/src/responder/common/responder_dp.c index 044aa385a..a116fedd8 100644 --- a/src/responder/common/responder_dp.c +++ b/src/responder/common/responder_dp.c @@ -70,6 +70,7 @@ static int sss_dp_req_destructor(void *ptr) struct sss_dp_callback *cb; struct sss_dp_req *sdp_req = talloc_get_type(ptr, struct sss_dp_req); struct sss_dp_req_state *state; + int hret; /* Cancel Dbus pending reply if still pending */ if (sdp_req->pending_reply) { @@ -105,7 +106,8 @@ static int sss_dp_req_destructor(void *ptr) } /* Destroy the hash entry */ - int hret = hash_delete(sdp_req->rctx->dp_request_table, sdp_req->key); + DEBUG(SSSDBG_TRACE_FUNC, ("Deleting request: [%s]\n", sdp_req->key->str)); + hret = hash_delete(sdp_req->rctx->dp_request_table, sdp_req->key); if (hret != HASH_SUCCESS) { /* This should never happen */ DEBUG(SSSDBG_TRACE_INTERNAL, @@ -259,12 +261,14 @@ sss_dp_issue_request(TALLOC_CTX *mem_ctx, struct resp_ctx *rctx, } key->type = HASH_KEY_STRING; - key->str = talloc_asprintf(key, "%p:%s\n", msg_create, strkey); + key->str = talloc_asprintf(key, "%p:%s", msg_create, strkey); if (!key->str) { ret = ENOMEM; goto fail; } + DEBUG(SSSDBG_TRACE_FUNC, ("Issuing request for [%s]\n", key->str)); + /* Check the hash for existing references to this request */ hret = hash_lookup(rctx->dp_request_table, key, &value); switch (hret) { @@ -667,6 +671,7 @@ sss_dp_internal_get_send(struct resp_ctx *rctx, value.type = HASH_VALUE_PTR; value.ptr = state->sdp_req; + DEBUG(SSSDBG_TRACE_FUNC, ("Entering request [%s]\n", key->str)); hret = hash_enter(rctx->dp_request_table, key, &value); if (hret != HASH_SUCCESS) { DEBUG(SSSDBG_CRIT_FAILURE, diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index e368e3ac6..1c9160b7a 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -2625,6 +2625,8 @@ static errno_t nss_cmd_setgrent_step(struct setent_step_ctx *step_ctx) if (dctx->check_provider) { step_ctx->returned_to_mainloop = true; /* Only do this once per provider */ + dctx->check_provider = false; + dpreq = sss_dp_get_account_send(step_ctx, rctx, dctx->domain, true, SSS_DP_USER, NULL, 0, NULL); if (!dpreq) { |