summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Cabrero <scabrero@zentyal.com>2014-05-28 17:57:31 +0200
committerKamen Mazdrashki <kamenim@samba.org>2014-05-30 15:29:29 +0200
commit90f9db9c062f2953c19f62dab3fab0b61d8c8e6c (patch)
tree475c7e1b2ade91050b32660c971e08254d71696e
parentbd2231244204eaee2bd82c7d769d8e8ae5e81fcf (diff)
downloadsamba-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.c8
-rw-r--r--source4/torture/libnetapi/libnetapi.c1
2 files changed, 9 insertions, 0 deletions
diff --git a/source3/passdb/pdb_samba_dsdb.c b/source3/passdb/pdb_samba_dsdb.c
index 01e747a00fc..febf21ceb27 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 c5169760aaa..431b531beb1 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);
}