summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/responder/nss/nsssrv_cmd.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c
index c30e21ee2..27cbedcbe 100644
--- a/src/responder/nss/nsssrv_cmd.c
+++ b/src/responder/nss/nsssrv_cmd.c
@@ -154,6 +154,8 @@ void nss_update_pw_memcache(struct nss_ctx *nctx)
ret, strerror(ret)));
}
}
+
+ talloc_zfree(res);
}
}
@@ -1855,6 +1857,7 @@ void nss_update_gr_memcache(struct nss_ctx *nctx)
ret, strerror(ret)));
}
}
+ talloc_zfree(res);
}
}
@@ -3373,6 +3376,7 @@ void nss_update_initgr_memcache(struct nss_ctx *nctx,
const char *name, const char *domain,
int gnum, uint32_t *groups)
{
+ TALLOC_CTX *tmp_ctx = NULL;
struct sss_domain_info *dom;
struct ldb_result *res;
bool changed = false;
@@ -3398,12 +3402,14 @@ void nss_update_initgr_memcache(struct nss_ctx *nctx,
return;
}
- ret = sysdb_initgroups(NULL, dom->sysdb, name, &res);
+ tmp_ctx = talloc_new(NULL);
+
+ ret = sysdb_initgroups(tmp_ctx, dom->sysdb, name, &res);
if (ret != EOK && ret != ENOENT) {
DEBUG(SSSDBG_CRIT_FAILURE,
("Failed to make request to our cache! [%d][%s]\n",
ret, strerror(ret)));
- return;
+ goto done;
}
/* copy, we need the original intact in case we need to invalidate
@@ -3458,6 +3464,9 @@ void nss_update_initgr_memcache(struct nss_ctx *nctx,
}
}
}
+
+done:
+ talloc_free(tmp_ctx);
}
/* FIXME: what about mpg, should we return the user's GID ? */