diff options
author | Sumit Bose <sbose@redhat.com> | 2011-03-07 10:12:19 +0100 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2011-03-07 07:59:17 -0500 |
commit | 41f17cd16fdbd881f372620ed9861483fc46eca0 (patch) | |
tree | 2253c4cee548cf1222fc51ab9c439fd4a17e58c3 /src | |
parent | 412ab492ded991c833e8592751a9d92f3c8cbe0e (diff) | |
download | sssd-41f17cd16fdbd881f372620ed9861483fc46eca0.tar.gz sssd-41f17cd16fdbd881f372620ed9861483fc46eca0.tar.bz2 sssd-41f17cd16fdbd881f372620ed9861483fc46eca0.zip |
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.
Diffstat (limited to 'src')
-rw-r--r-- | 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 07cd2bdc..6d74330d 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")); } |