]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Remove unnecessary/incorrect talloc_steal() calls
authorJonathon Reinhart <Jonathon.Reinhart@gmail.com>
Wed, 5 Feb 2020 05:25:36 +0000 (00:25 -0500)
committerAndreas Schneider <asn@cryptomilk.org>
Thu, 5 Mar 2020 18:40:16 +0000 (18:40 +0000)
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 <Jonathon.Reinhart@gmail.com>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Thu Mar  5 18:40:16 UTC 2020 on sn-devel-184

source3/passdb/pdb_samba_dsdb.c
source4/dsdb/common/util_samr.c

index 351881722e6cfd5e80a6a5c9a302a848117dad36..c5f8d479fb6cee5caf84410e282f87ee07b2e0a5 100644 (file)
@@ -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;
index 5370fc94ebac480846af25241b3cd81a1f43574d..89339c109d0b55d790eb5f721402ae0502cd3e6c 100644 (file)
@@ -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;