summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2011-03-07 10:12:19 +0100
committerStephen Gallagher <sgallagh@redhat.com>2011-03-07 07:59:17 -0500
commit41f17cd16fdbd881f372620ed9861483fc46eca0 (patch)
tree2253c4cee548cf1222fc51ab9c439fd4a17e58c3 /src
parent412ab492ded991c833e8592751a9d92f3c8cbe0e (diff)
downloadsssd-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.c11
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"));
}