summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2012-02-09 11:30:03 +0100
committerStephen Gallagher <sgallagh@redhat.com>2012-02-10 13:30:01 -0500
commit08207cb57473192c99893938fd60dc6a6ff90eb0 (patch)
treee1e8c95ded5a34c4a4da947e3f3d12897ee357f1
parent04d27ffd7c52f7519b25ff8b8896a901c0439898 (diff)
downloadsssd-08207cb57473192c99893938fd60dc6a6ff90eb0.tar.gz
sssd-08207cb57473192c99893938fd60dc6a6ff90eb0.tar.bz2
sssd-08207cb57473192c99893938fd60dc6a6ff90eb0.zip
Fix group enumeration
Also adds some more debugging and fixes a code style issue. https://fedorahosted.org/sssd/ticket/1182
-rw-r--r--src/responder/common/responder_dp.c9
-rw-r--r--src/responder/nss/nsssrv_cmd.c2
2 files changed, 9 insertions, 2 deletions
diff --git a/src/responder/common/responder_dp.c b/src/responder/common/responder_dp.c
index 044aa385..a116fedd 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 e368e3ac..1c9160b7 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) {