[PATCH] Minor cleanup to libnet_join_member
Swen Schillig
swen at vnet.ibm.com
Thu Jan 25 12:09:24 UTC 2018
Oops, sorry.
On Thu, 2018-01-25 at 12:11 +0100, David Disseldorp via samba-technical
wrote:
> On Thu, 25 Jan 2018 11:23:26 +0100, Swen Schillig via samba-technical
> wrote:
>
> > This will return NT_STATUS_OK on talloc failure. My preference
> > would
> be
> to explicitly set status immediately prior to each enomem goto.
>
> Cheers, David
Indeed, good catch.
Explicitly setting status now where it isn't set already.
Fixed patch attached,
Cheers Swen
-------------- next part --------------
From 6bcd67e1d6c3fabafdf59c56a054a765537bc8dc Mon Sep 17 00:00:00 2001
From: Swen Schillig <swen at vnet.ibm.com>
Date: Thu, 25 Jan 2018 11:18:50 +0100
Subject: [PATCH] Minor cleanup to libnet_join_member
Prevent code duplication by consolidating cleanup task
at the end of the function.
Signed-off-by: Swen Schillig <swen at vnet.ibm.com>
---
source4/libnet/libnet_join.c | 37 ++++++++++++++++---------------------
1 file changed, 16 insertions(+), 21 deletions(-)
diff --git a/source4/libnet/libnet_join.c b/source4/libnet/libnet_join.c
index 6cd18e02c9b..3ea482e186f 100644
--- a/source4/libnet/libnet_join.c
+++ b/source4/libnet/libnet_join.c
@@ -922,7 +922,7 @@ NTSTATUS libnet_Join_member(struct libnet_context *ctx,
TALLOC_CTX *mem_ctx,
struct libnet_Join_member *r)
{
- NTSTATUS status;
+ NTSTATUS status = NT_STATUS_OK;
TALLOC_CTX *tmp_mem;
struct libnet_JoinDomain *r2;
struct provision_store_self_join_settings *set_secrets;
@@ -940,11 +940,10 @@ NTSTATUS libnet_Join_member(struct libnet_context *ctx,
r2 = talloc_zero(tmp_mem, struct libnet_JoinDomain);
if (!r2) {
- r->out.error_string = NULL;
- talloc_free(tmp_mem);
- return NT_STATUS_NO_MEMORY;
+ status = NT_STATUS_NO_MEMORY;
+ goto out;
}
-
+
acct_type = ACB_WSTRUST;
if (r->in.netbios_name != NULL) {
@@ -952,19 +951,17 @@ NTSTATUS libnet_Join_member(struct libnet_context *ctx,
} else {
netbios_name = talloc_strdup(tmp_mem, lpcfg_netbios_name(ctx->lp_ctx));
if (!netbios_name) {
- r->out.error_string = NULL;
- talloc_free(tmp_mem);
- return NT_STATUS_NO_MEMORY;
+ status = NT_STATUS_NO_MEMORY;
+ goto out;
}
}
account_name = talloc_asprintf(tmp_mem, "%s$", netbios_name);
if (!account_name) {
- r->out.error_string = NULL;
- talloc_free(tmp_mem);
- return NT_STATUS_NO_MEMORY;
+ status = NT_STATUS_NO_MEMORY;
+ goto out;
}
-
+
/*
* join the domain
*/
@@ -978,16 +975,14 @@ NTSTATUS libnet_Join_member(struct libnet_context *ctx,
status = libnet_JoinDomain(ctx, r2, r2);
if (!NT_STATUS_IS_OK(status)) {
r->out.error_string = talloc_steal(mem_ctx, r2->out.error_string);
- talloc_free(tmp_mem);
- return status;
+ goto out;
}
set_secrets = talloc_zero(tmp_mem,
struct provision_store_self_join_settings);
if (!set_secrets) {
- r->out.error_string = NULL;
- talloc_free(tmp_mem);
- return NT_STATUS_NO_MEMORY;
+ status = NT_STATUS_NO_MEMORY;
+ goto out;
}
set_secrets->domain_name = r2->out.domain_name;
@@ -997,7 +992,7 @@ NTSTATUS libnet_Join_member(struct libnet_context *ctx,
set_secrets->machine_password = r2->out.join_password;
set_secrets->key_version_number = r2->out.kvno;
set_secrets->domain_sid = r2->out.domain_sid;
-
+
status = provision_store_self_join(ctx, ctx->lp_ctx, ctx->event_ctx, set_secrets, &error_string);
if (!NT_STATUS_IS_OK(status)) {
if (error_string) {
@@ -1008,8 +1003,7 @@ NTSTATUS libnet_Join_member(struct libnet_context *ctx,
"provision_store_self_join failed with %s",
nt_errstr(status));
}
- talloc_free(tmp_mem);
- return status;
+ goto out;
}
/* move all out parameter to the callers TALLOC_CTX */
@@ -1020,7 +1014,8 @@ NTSTATUS libnet_Join_member(struct libnet_context *ctx,
talloc_reparent(r2, mem_ctx, r2->out.domain_sid);
r->out.domain_name = r2->out.domain_name;
talloc_reparent(r2, mem_ctx, r2->out.domain_name);
+out:
talloc_free(tmp_mem);
- return NT_STATUS_OK;
+ return status;
}
--
2.14.3
More information about the samba-technical
mailing list