From 40f9ef627c943dd7d2b2de3270607f46c01f1cda Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Mon, 7 Mar 2011 10:12:19 +0100 Subject: [PATCH 2/2] Refactor set_netgroup_entry() To avoid wrong or missing netgroup names in the getent_ctx destructor set_netgroup_entry() now takes the name out of the getent_ctx struct instead of using a separate argument. --- src/responder/nss/nsssrv_netgroup.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/responder/nss/nsssrv_netgroup.c b/src/responder/nss/nsssrv_netgroup.c index 07cd2bd..6d74330 100644 --- a/src/responder/nss/nsssrv_netgroup.c +++ b/src/responder/nss/nsssrv_netgroup.c @@ -57,16 +57,19 @@ static errno_t get_netgroup_entry(struct nss_ctx *nctx, static int netgr_hash_remove (TALLOC_CTX *ctx); static errno_t set_netgroup_entry(struct nss_ctx *nctx, - char *name, struct getent_ctx *netgr) { hash_key_t key; hash_value_t value; int hret; + if (netgr->name == NULL) { + DEBUG(1, ("Missing netgroup name.\n")); + return EINVAL; + } /* Add this entry to the hash table */ key.type = HASH_KEY_STRING; - key.str = name; + key.str = netgr->name; value.type = HASH_VALUE_PTR; value.ptr = netgr; hret = hash_enter(nctx->netgroups, &key, &value); @@ -270,7 +273,7 @@ static struct tevent_req *setnetgrent_send(TALLOC_CTX *mem_ctx, goto error; } - ret = set_netgroup_entry(nctx, client->netgr_name, state->netgr); + ret = set_netgroup_entry(nctx, state->netgr); if (ret != EOK) { DEBUG(1, ("set_netgroup_entry failed.\n")); talloc_free(state->netgr); @@ -501,7 +504,7 @@ static errno_t lookup_netgr_step(struct setent_step_ctx *step_ctx) return ENOMEM; } - ret = set_netgroup_entry(step_ctx->nctx, step_ctx->name, netgr); + ret = set_netgroup_entry(step_ctx->nctx, netgr); if (ret != EOK) { DEBUG(1, ("set_netgroup_entry failed, ignored.\n")); } -- 1.7.4