diff options
author | Michael Adam <obnox@samba.org> | 2008-08-01 17:10:59 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2008-08-01 17:10:59 +0200 |
commit | 84ee630ee973189ca9f2ce2afe4987998aaeccc7 (patch) | |
tree | 2e199026f65048899bec2a542cec446e8ee0e927 | |
parent | 4c6e9662b8360692f8ee8c36287ec8aa0b9d831a (diff) | |
download | samba-84ee630ee973189ca9f2ce2afe4987998aaeccc7.tar.gz samba-84ee630ee973189ca9f2ce2afe4987998aaeccc7.tar.bz2 samba-84ee630ee973189ca9f2ce2afe4987998aaeccc7.zip |
libnet dssync: fix memory allocation for error/result messages.
Use the libnet_dssync_context as a talloc context for the
result_message and error_message string members.
Using the passed in mem_ctx makes the implicit assumption
that mem_ctx is at least as long-lived as the libnet_dssync_context,
which is wrong.
Michael
(This used to be commit 635baf6b7d2a1822ceb48aa4bc47569ef19d51cc)
-rw-r--r-- | source3/libnet/libnet_dssync.c | 14 | ||||
-rw-r--r-- | source3/libnet/libnet_dssync_keytab.c | 8 |
2 files changed, 11 insertions, 11 deletions
diff --git a/source3/libnet/libnet_dssync.c b/source3/libnet/libnet_dssync.c index e03a6023c9..3641505d99 100644 --- a/source3/libnet/libnet_dssync.c +++ b/source3/libnet/libnet_dssync.c @@ -308,7 +308,7 @@ static NTSTATUS libnet_dssync_lookup_nc(TALLOC_CTX *mem_ctx, &ctr, &werr); if (!NT_STATUS_IS_OK(status)) { - ctx->error_message = talloc_asprintf(mem_ctx, + ctx->error_message = talloc_asprintf(ctx, "Failed to lookup DN for domain name: %s", get_friendly_werror_msg(werr)); return status; @@ -525,7 +525,7 @@ static NTSTATUS libnet_dssync_getncchanges(TALLOC_CTX *mem_ctx, &ctr, &werr); if (!NT_STATUS_IS_OK(status)) { - ctx->error_message = talloc_asprintf(mem_ctx, + ctx->error_message = talloc_asprintf(ctx, "Failed to get NC Changes: %s", get_friendly_werror_msg(werr)); goto out; @@ -600,7 +600,7 @@ static NTSTATUS libnet_dssync_getncchanges(TALLOC_CTX *mem_ctx, status = cli_get_session_key(mem_ctx, ctx->cli, &ctx->session_key); if (!NT_STATUS_IS_OK(status)) { - ctx->error_message = talloc_asprintf(mem_ctx, + ctx->error_message = talloc_asprintf(ctx, "Failed to get Session Key: %s", nt_errstr(status)); goto out; @@ -615,7 +615,7 @@ static NTSTATUS libnet_dssync_getncchanges(TALLOC_CTX *mem_ctx, first_object, mapping_ctr); if (!NT_STATUS_IS_OK(status)) { - ctx->error_message = talloc_asprintf(mem_ctx, + ctx->error_message = talloc_asprintf(ctx, "Failed to call processing function: %s", nt_errstr(status)); goto out; @@ -644,7 +644,7 @@ static NTSTATUS libnet_dssync_process(TALLOC_CTX *mem_ctx, status = ctx->ops->startup(ctx, mem_ctx, &old_utdv); if (!NT_STATUS_IS_OK(status)) { - ctx->error_message = talloc_asprintf(mem_ctx, + ctx->error_message = talloc_asprintf(ctx, "Failed to call startup operation: %s", nt_errstr(status)); goto out; @@ -670,7 +670,7 @@ static NTSTATUS libnet_dssync_process(TALLOC_CTX *mem_ctx, status = libnet_dssync_getncchanges(mem_ctx, ctx, level, &req, &pnew_utdv); if (!NT_STATUS_IS_OK(status)) { - ctx->error_message = talloc_asprintf(mem_ctx, + ctx->error_message = talloc_asprintf(ctx, "Failed to call DsGetNCCHanges: %s", nt_errstr(status)); goto out; @@ -679,7 +679,7 @@ static NTSTATUS libnet_dssync_process(TALLOC_CTX *mem_ctx, status = ctx->ops->finish(ctx, mem_ctx, pnew_utdv); if (!NT_STATUS_IS_OK(status)) { - ctx->error_message = talloc_asprintf(mem_ctx, + ctx->error_message = talloc_asprintf(ctx, "Failed to call finishing operation: %s", nt_errstr(status)); goto out; diff --git a/source3/libnet/libnet_dssync_keytab.c b/source3/libnet/libnet_dssync_keytab.c index 71fc7147df..6ba2c3aa41 100644 --- a/source3/libnet/libnet_dssync_keytab.c +++ b/source3/libnet/libnet_dssync_keytab.c @@ -90,7 +90,7 @@ static NTSTATUS keytab_startup(struct dssync_context *ctx, TALLOC_CTX *mem_ctx, (ndr_pull_flags_fn_t)ndr_pull_replUpToDateVectorBlob); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { NTSTATUS status = ndr_map_error2ntstatus(ndr_err); - ctx->error_message = talloc_asprintf(mem_ctx, + ctx->error_message = talloc_asprintf(ctx, "Failed to pull UpToDateVector: %s", nt_errstr(status)); return status; @@ -128,7 +128,7 @@ static NTSTATUS keytab_finish(struct dssync_context *ctx, TALLOC_CTX *mem_ctx, (ndr_push_flags_fn_t)ndr_push_replUpToDateVectorBlob); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { status = ndr_map_error2ntstatus(ndr_err); - ctx->error_message = talloc_asprintf(mem_ctx, + ctx->error_message = talloc_asprintf(ctx, "Failed to push UpToDateVector: %s", nt_errstr(status)); goto done; @@ -146,13 +146,13 @@ static NTSTATUS keytab_finish(struct dssync_context *ctx, TALLOC_CTX *mem_ctx, ret = libnet_keytab_add(keytab_ctx); if (ret) { status = krb5_to_nt_status(ret); - ctx->error_message = talloc_asprintf(mem_ctx, + ctx->error_message = talloc_asprintf(ctx, "Failed to add entries to keytab %s: %s", keytab_ctx->keytab_name, error_message(ret)); goto done; } - ctx->result_message = talloc_asprintf(mem_ctx, + ctx->result_message = talloc_asprintf(ctx, "Vampired %d accounts to keytab %s", keytab_ctx->count, keytab_ctx->keytab_name); |