diff options
author | Samuel Cabrero <scabrero@zentyal.com> | 2014-05-28 17:57:31 +0200 |
---|---|---|
committer | Kamen Mazdrashki <kamenim@samba.org> | 2014-05-30 15:29:29 +0200 |
commit | 90f9db9c062f2953c19f62dab3fab0b61d8c8e6c (patch) | |
tree | 475c7e1b2ade91050b32660c971e08254d71696e | |
parent | bd2231244204eaee2bd82c7d769d8e8ae5e81fcf (diff) | |
download | samba-90f9db9c062f2953c19f62dab3fab0b61d8c8e6c.tar.gz samba-90f9db9c062f2953c19f62dab3fab0b61d8c8e6c.tar.xz samba-90f9db9c062f2953c19f62dab3fab0b61d8c8e6c.zip |
Fix several talloc stack frames not freed
Signed-off-by: Samuel Cabrero <scabrero@zentyal.com>
Reviewed-by: Kamen Mazdrashki <kamenim@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Kamen Mazdrashki <kamenim@samba.org>
Autobuild-Date(master): Fri May 30 15:29:29 CEST 2014 on sn-devel-104
-rw-r--r-- | source3/passdb/pdb_samba_dsdb.c | 8 | ||||
-rw-r--r-- | source4/torture/libnetapi/libnetapi.c | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/source3/passdb/pdb_samba_dsdb.c b/source3/passdb/pdb_samba_dsdb.c index 01e747a00f..febf21ceb2 100644 --- a/source3/passdb/pdb_samba_dsdb.c +++ b/source3/passdb/pdb_samba_dsdb.c @@ -339,6 +339,7 @@ static int pdb_samba_dsdb_replace_by_sam(struct pdb_samba_dsdb_state *state, msg = ldb_msg_new(frame); if (!msg) { + talloc_free(frame); return false; } @@ -375,6 +376,7 @@ static int pdb_samba_dsdb_replace_by_sam(struct pdb_samba_dsdb_state *state, pw, strlen(pw), (void *)&pw_utf16.data, &pw_utf16.length)) { + talloc_free(frame); return LDB_ERR_OPERATIONS_ERROR; } ret |= ldb_msg_add_value(msg, "clearTextPassword", &pw_utf16, NULL); @@ -1011,6 +1013,7 @@ static NTSTATUS pdb_samba_dsdb_getgrgid(struct pdb_methods *m, GROUP_MAP *map, status = idmap_xids_to_sids(state->idmap_ctx, tmp_ctx, id_maps); if (!NT_STATUS_IS_OK(status)) { + talloc_free(tmp_ctx); return status; } status = pdb_samba_dsdb_getgrsid(m, map, *id_map.sid); @@ -1521,6 +1524,7 @@ static NTSTATUS pdb_samba_dsdb_delete_alias(struct pdb_methods *m, if (ldb_transaction_start(state->ldb) != LDB_SUCCESS) { DEBUG(0, ("Failed to start transaction in dsdb_add_domain_alias(): %s\n", ldb_errstring(state->ldb))); + talloc_free(tmp_ctx); return NT_STATUS_INTERNAL_ERROR; } @@ -1542,15 +1546,18 @@ static NTSTATUS pdb_samba_dsdb_delete_alias(struct pdb_methods *m, DEBUG(10, ("ldb_delete failed %s\n", ldb_errstring(state->ldb))); ldb_transaction_cancel(state->ldb); + talloc_free(tmp_ctx); return NT_STATUS_LDAP(rc); } if (ldb_transaction_commit(state->ldb) != LDB_SUCCESS) { DEBUG(0, ("Failed to commit transaction in pdb_samba_dsdb_delete_alias(): %s\n", ldb_errstring(state->ldb))); + talloc_free(tmp_ctx); return NT_STATUS_INTERNAL_ERROR; } + talloc_free(tmp_ctx); return NT_STATUS_OK; } @@ -2061,6 +2068,7 @@ static bool pdb_samba_dsdb_gid_to_sid(struct pdb_methods *m, gid_t gid, status = idmap_xids_to_sids(state->idmap_ctx, tmp_ctx, id_maps); if (!NT_STATUS_IS_OK(status)) { + talloc_free(tmp_ctx); return false; } *sid = *id_map.sid; diff --git a/source4/torture/libnetapi/libnetapi.c b/source4/torture/libnetapi/libnetapi.c index c5169760aa..431b531beb 100644 --- a/source4/torture/libnetapi/libnetapi.c +++ b/source4/torture/libnetapi/libnetapi.c @@ -35,6 +35,7 @@ bool torture_libnetapi_init_context(struct torture_context *tctx, if (!lp_load(lpcfg_configfile(tctx->lp_ctx), true, false, false, true)) { fprintf(stderr, "error loading %s\n", lpcfg_configfile(tctx->lp_ctx)); + talloc_free(frame); return W_ERROR_V(WERR_GENERAL_FAILURE); } |