From 5e92d08360f43d74fa3161fbf1041a188add0834 Mon Sep 17 00:00:00 2001 From: Jonathon Reinhart Date: Wed, 5 Feb 2020 00:25:36 -0500 Subject: [PATCH] Remove unnecessary/incorrect talloc_steal() calls The talloc_steal() in dsdb_enum_group_mem() is unnecessary, because members was already allocated from the same mem_ctx. The talloc_steal() in pdb_samba_dsdb_enum_aliasmem() is also unnecessary for the same reason, but also incorrect, because it should be dereferencing pmembers: talloc_steal(mem_ctx, *pmembers); Furthermore, we should only assign to *pnum_members on success; otherwise num_members is used uninitialized. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14264 Signed-off-by: Jonathon Reinhart Reviewed-by: Andreas Schneider Reviewed-by: Guenther Deschner Autobuild-User(master): Andreas Schneider Autobuild-Date(master): Thu Mar 5 18:40:16 UTC 2020 on sn-devel-184 (cherry picked from commit a4ed6ada500c3ee7ef8b5e43998968627121f255) --- source3/passdb/pdb_samba_dsdb.c | 3 +-- source4/dsdb/common/util_samr.c | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/source3/passdb/pdb_samba_dsdb.c b/source3/passdb/pdb_samba_dsdb.c index 351881722e6..c5f8d479fb6 100644 --- a/source3/passdb/pdb_samba_dsdb.c +++ b/source3/passdb/pdb_samba_dsdb.c @@ -1752,9 +1752,8 @@ static NTSTATUS pdb_samba_dsdb_enum_aliasmem(struct pdb_methods *m, } status = dsdb_enum_group_mem(state->ldb, mem_ctx, dn, pmembers, &num_members); - *pnum_members = num_members; if (NT_STATUS_IS_OK(status)) { - talloc_steal(mem_ctx, pmembers); + *pnum_members = num_members; } talloc_free(tmp_ctx); return status; diff --git a/source4/dsdb/common/util_samr.c b/source4/dsdb/common/util_samr.c index 5370fc94eba..89339c109d0 100644 --- a/source4/dsdb/common/util_samr.c +++ b/source4/dsdb/common/util_samr.c @@ -495,7 +495,7 @@ NTSTATUS dsdb_enum_group_mem(struct ldb_context *ldb, ++j; } - *members_out = talloc_steal(mem_ctx, members); + *members_out = members; *pnum_members = j; talloc_free(tmp_ctx); return NT_STATUS_OK; -- 2.25.1