[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Mon Mar 29 08:43:37 MDT 2010


The branch, master has been updated
       via  e230c8d... pidl:Samba4/Client: don't mix rpc and application NTSTATUS errors anymore for the new bindings
       via  979c50e... s4:torture/rpc/samba3rpc.c: add explicit check for NTSTATUS r.out.result
       via  733701a... s4:libnet/libnet_passwd.c: add explicit check for NTSTATUS r.out.result
       via  cd3ae92... s4:libnet/libnet_samsync.c: add explicit check for NTSTATUS r.out.result
       via  d0efef3... s4:libnet/libnet_join.c: add explicit check for NTSTATUS r.out.result
       via  12ee027... s4:libcli/util/clilsa.c: add explicit check for NTSTATUS r.out.result
       via  10e46e5... s4:torture/rpc/lsa.c: add explicit check for NTSTATUS r.out.result
       via  1a4d9b9... s4:torture/rpc/samr.c: add explicit check for NTSTATUS r.out.result
       via  e531b52... s4:torture/rpc/handles.c: add explicit check for NTSTATUS r.out.result
       via  3398636... s4:torture/rpc/samr_accessmask.c: add explicit check for NTSTATUS r.out.result
       via  08177e9... s4:torture/rpc/samsync.c: add explicit check for NTSTATUS r.out.result
       via  5dcb1e5... s4:torture/rpc/samlogon.c: add explicit check for NTSTATUS r.out.result
       via  2f7f725... s4:torture/rpc/netlogon.c: add explicit check for NTSTATUS r.out.result
       via  8ac42bc... s4:torture/rpc/lsa_lookup.c:add explicit check for NTSTATUS r.out.result
       via  1248adb... s4:torture/libnet:add explicit check for NTSTATUS r.out.result
       via  2d35523... s4:torture/rpc/schannel.c: add explicit check for NTSTATUS r.out.result
       via  940c6ab... s4:torture/rpc/remote_pac.c: add explicit check for NTSTATUS r.out.result
       via  a154bb5... s4:torture/rpc/testjoin.c: add explicit check for NTSTATUS r.out.result
       via  959a128... s4:torture/rpc/session_key.c: add explicit check for NTSTATUS r.out.result
       via  583c7cb... s4:torture/rpc/eventlog.c: add explicit check for NTSTATUS r.out.result
       via  159ca62... s4:torture/rpc/unixinfo.c: add explicit check for NTSTATUS r.out.result
       via  1184ef6... s4:torture/ntp: add explicit check for NTSTATUS r.out.result
       via  0590e7e... s4:torture/rpc/atsvc.c: add explicit check for NTSTATUS r.out.result
       via  fd94954... s4:torture/rpc/echo.c: remove NTSTATUS status variables
       via  870a21b... s4:torture/rpc/echo.c: add explicit check for NTSTATUS r.out.result
      from  8b1651c... s3: Fix bug 7212, "getent group does not return group members"

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit e230c8dd2441181963c6df678be06cdaaf6cb822
Author: Stefan Metzmacher <metze at samba.org>
Date:   Sat Mar 27 12:48:21 2010 +0100

    pidl:Samba4/Client: don't mix rpc and application NTSTATUS errors anymore for the new bindings
    
    The new dcerpc_binding_handle based client stubs don't mix error codes anymore,
    while the old dcerpc_pipe based ones still do to keep OpenChange happy for now.
    
    metze

commit 979c50eff7a7a1611e27f0e26db821416d50110f
Author: Günther Deschner <gd at samba.org>
Date:   Wed Mar 24 13:14:09 2010 +0100

    s4:torture/rpc/samba3rpc.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 733701ae9b98b79685dad2679f8172a981634b99
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Mar 17 20:14:53 2010 +0100

    s4:libnet/libnet_passwd.c: add explicit check for NTSTATUS r.out.result
    
    metze

commit cd3ae926e7f54b29eb733e42aafd1a1b6c45dc38
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Mar 17 20:31:15 2010 +0100

    s4:libnet/libnet_samsync.c: add explicit check for NTSTATUS r.out.result
    
    metze

commit d0efef3f864f36eefe6b0abd152c4614324f2fc2
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Mar 17 20:30:57 2010 +0100

    s4:libnet/libnet_join.c: add explicit check for NTSTATUS r.out.result
    
    metze

commit 12ee027106009664bd6e138df819250e99af5188
Author: Günther Deschner <gd at samba.org>
Date:   Tue Mar 23 15:04:25 2010 +0100

    s4:libcli/util/clilsa.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 10e46e52abde3095d575db39cc3fd60ae6eeb264
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Mar 24 09:06:54 2010 +0100

    s4:torture/rpc/lsa.c: add explicit check for NTSTATUS r.out.result
    
    metze

commit 1a4d9b95eec6983fbc28a69f1b4b3049c2f27397
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 19 00:38:04 2010 +0100

    s4:torture/rpc/samr.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit e531b52ab965b7f258b475da9639330e3c49c8cc
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 19 15:35:36 2010 +0100

    s4:torture/rpc/handles.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 3398636a3bf2e55adda01eb92fc7aaf5c03adb2a
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 19 12:23:37 2010 +0100

    s4:torture/rpc/samr_accessmask.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 08177e98b2237b9428bfc28c4a0ebdfd34eba49a
Author: Stefan Metzmacher <metze at samba.org>
Date:   Sat Mar 27 10:45:17 2010 +0100

    s4:torture/rpc/samsync.c: add explicit check for NTSTATUS r.out.result

commit 5dcb1e5030e07922405bb0175d3459f6ed96054c
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 19 14:56:52 2010 +0100

    s4:torture/rpc/samlogon.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 2f7f7257d938b9f223399df8d0cbf31b91a3f55a
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 19 14:45:38 2010 +0100

    s4:torture/rpc/netlogon.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 8ac42bc0dc1b946893c9cc7a5a8555a1ca89819a
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 19 00:09:46 2010 +0100

    s4:torture/rpc/lsa_lookup.c:add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 1248adb2c5716d26323e6e9bb1ac81103701d908
Author: Günther Deschner <gd at samba.org>
Date:   Tue Mar 23 15:20:16 2010 +0100

    s4:torture/libnet:add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 2d35523f24f7806d41d785028e09f9cb6bbfaf56
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 19 14:17:18 2010 +0100

    s4:torture/rpc/schannel.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 940c6ab29f21862ba21d313223ce73c6e3ea6401
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 19 14:48:36 2010 +0100

    s4:torture/rpc/remote_pac.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit a154bb56297c7bdfe7d7505afc409e0333100770
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 19 13:55:35 2010 +0100

    s4:torture/rpc/testjoin.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 959a128c7b9303b59e92273b01fefde02d752015
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 19 00:16:29 2010 +0100

    s4:torture/rpc/session_key.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 583c7cbd4c70be4f8e4d1c28fb7bba42c5d3c05d
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 19 12:57:54 2010 +0100

    s4:torture/rpc/eventlog.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 159ca620946951b03431ef57623552abcea6b2f6
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 19 00:21:01 2010 +0100

    s4:torture/rpc/unixinfo.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 1184ef6672347e6e446a485b992249f051a3873c
Author: Günther Deschner <gd at samba.org>
Date:   Tue Mar 23 15:19:25 2010 +0100

    s4:torture/ntp: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 0590e7ef3685d629057971cf132838bf7e223ee3
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 19 12:26:27 2010 +0100

    s4:torture/rpc/atsvc.c: add explicit check for NTSTATUS r.out.result
    
    Guenther
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit fd9495491d8cdefc4bdbd20d1881f43c119537c2
Author: Stefan Metzmacher <metze at sernet.private>
Date:   Wed Mar 24 09:45:21 2010 +0100

    s4:torture/rpc/echo.c: remove NTSTATUS status variables
    
    metze

commit 870a21b3ecc11b16f09b59440dc9e42b09f807d3
Author: Stefan Metzmacher <metze at sernet.private>
Date:   Wed Mar 24 09:31:17 2010 +0100

    s4:torture/rpc/echo.c: add explicit check for NTSTATUS r.out.result
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm |   17 +-
 source4/libcli/util/clilsa.c             |   34 +-
 source4/libnet/libnet_join.c             |   30 +
 source4/libnet/libnet_passwd.c           |   36 +
 source4/libnet/libnet_samsync.c          |    3 +
 source4/torture/libnet/domain.c          |   11 +-
 source4/torture/libnet/libnet_domain.c   |   71 +-
 source4/torture/libnet/libnet_group.c    |  111 ++--
 source4/torture/libnet/libnet_user.c     |  120 ++--
 source4/torture/libnet/utils.c           |  117 ++--
 source4/torture/ntp/ntp_signd.c          |   16 +-
 source4/torture/rpc/atsvc.c              |   28 +-
 source4/torture/rpc/echo.c               |   73 +-
 source4/torture/rpc/eventlog.c           |   80 ++-
 source4/torture/rpc/handles.c            |  100 ++-
 source4/torture/rpc/lsa.c                |  667 ++++++++-------
 source4/torture/rpc/lsa_lookup.c         |   28 +-
 source4/torture/rpc/netlogon.c           |  214 +++---
 source4/torture/rpc/remote_pac.c         |   25 +-
 source4/torture/rpc/samba3rpc.c          |  152 ++++-
 source4/torture/rpc/samlogon.c           |   49 +-
 source4/torture/rpc/samr.c               | 1327 +++++++++++++++++-------------
 source4/torture/rpc/samr_accessmask.c    |  130 ++--
 source4/torture/rpc/samsync.c            |  262 ++++---
 source4/torture/rpc/schannel.c           |   48 +-
 source4/torture/rpc/session_key.c        |   25 +-
 source4/torture/rpc/testjoin.c           |   53 ++-
 source4/torture/rpc/unixinfo.c           |   25 +-
 28 files changed, 2273 insertions(+), 1579 deletions(-)


Changeset truncated at 500 lines:

diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm
index aa9dad9..43fe611 100644
--- a/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm
@@ -280,7 +280,22 @@ sub ParseFunction_r_Sync($$$)
 	$res .= "\t\tstruct dcerpc_pipe);\n";
 	$res .= "\n";
 
-	$res .= "\treturn dcerpc_$name(p, mem_ctx, r);\n";
+	$res .= "
+	NTSTATUS status;
+
+	if (p->conn->flags & DCERPC_DEBUG_PRINT_IN) {
+		NDR_PRINT_IN_DEBUG($name, r);
+	}
+
+	status = dcerpc_ndr_request(p, NULL, &ndr_table_$interface->{NAME},
+				    NDR_$uname, mem_ctx, r);
+
+	if (NT_STATUS_IS_OK(status) && (p->conn->flags & DCERPC_DEBUG_PRINT_OUT)) {
+		NDR_PRINT_OUT_DEBUG($name, r);
+	}
+	return status;
+";
+
 	$res .= "}\n";
 	$res .= "\n";
 }
diff --git a/source4/libcli/util/clilsa.c b/source4/libcli/util/clilsa.c
index fda8aa7..50435cf 100644
--- a/source4/libcli/util/clilsa.c
+++ b/source4/libcli/util/clilsa.c
@@ -125,6 +125,11 @@ static NTSTATUS smblsa_connect(struct smbcli_state *cli)
 		return status;
 	}
 
+	if (!NT_STATUS_IS_OK(r.out.result)) {
+		talloc_free(lsa);
+		return r.out.result;
+	}
+
 	cli->lsa = lsa;
 	
 	return NT_STATUS_OK;
@@ -150,7 +155,12 @@ NTSTATUS smblsa_sid_privileges(struct smbcli_state *cli, struct dom_sid *sid,
 	r.in.sid = sid;
 	r.out.rights = rights;
 
-	return dcerpc_lsa_EnumAccountRights_r(cli->lsa->pipe->binding_handle, mem_ctx, &r);
+	status = dcerpc_lsa_EnumAccountRights_r(cli->lsa->pipe->binding_handle, mem_ctx, &r);
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
+
+	return r.out.result;
 }
 
 
@@ -239,6 +249,10 @@ NTSTATUS smblsa_lookup_sid(struct smbcli_state *cli,
 		talloc_free(mem_ctx2);
 		return status;
 	}
+	if (!NT_STATUS_IS_OK(r.out.result)) {
+		talloc_free(mem_ctx2);
+		return r.out.result;
+	}
 	if (names.count != 1) {
 		talloc_free(mem_ctx2);
 		return NT_STATUS_UNSUCCESSFUL;
@@ -296,6 +310,10 @@ NTSTATUS smblsa_lookup_name(struct smbcli_state *cli,
 		talloc_free(mem_ctx2);
 		return status;
 	}
+	if (!NT_STATUS_IS_OK(r.out.result)) {
+		talloc_free(mem_ctx2);
+		return r.out.result;
+	}
 	if (sids.count != 1) {
 		talloc_free(mem_ctx2);
 		return NT_STATUS_UNSUCCESSFUL;
@@ -332,7 +350,12 @@ NTSTATUS smblsa_sid_add_privileges(struct smbcli_state *cli, struct dom_sid *sid
 	r.in.sid = sid;
 	r.in.rights = rights;
 
-	return dcerpc_lsa_AddAccountRights_r(cli->lsa->pipe->binding_handle, mem_ctx, &r);
+	status = dcerpc_lsa_AddAccountRights_r(cli->lsa->pipe->binding_handle, mem_ctx, &r);
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
+
+	return r.out.result;
 }
 
 /*
@@ -355,5 +378,10 @@ NTSTATUS smblsa_sid_del_privileges(struct smbcli_state *cli, struct dom_sid *sid
 	r.in.remove_all = 0;
 	r.in.rights = rights;
 
-	return dcerpc_lsa_RemoveAccountRights_r(cli->lsa->pipe->binding_handle, mem_ctx, &r);
+	status = dcerpc_lsa_RemoveAccountRights_r(cli->lsa->pipe->binding_handle, mem_ctx, &r);
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
+
+	return r.out.result;
 }
diff --git a/source4/libnet/libnet_join.c b/source4/libnet/libnet_join.c
index cf0c51b..f5cbda0 100644
--- a/source4/libnet/libnet_join.c
+++ b/source4/libnet/libnet_join.c
@@ -540,6 +540,9 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
 
 	/* 2. do a samr_Connect to get a policy handle */
 	status = dcerpc_samr_Connect_r(samr_pipe->binding_handle, tmp_ctx, &sc);
+	if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(sc.out.result)) {
+		status = sc.out.result;
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		r->out.error_string = talloc_asprintf(mem_ctx,
 						"samr_Connect failed: %s",
@@ -570,6 +573,9 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
 		l.out.sid = &sid;
 		
 		status = dcerpc_samr_LookupDomain_r(samr_pipe->binding_handle, tmp_ctx, &l);
+		if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(l.out.result)) {
+			status = l.out.result;
+		}
 		if (!NT_STATUS_IS_OK(status)) {
 			r->out.error_string = talloc_asprintf(mem_ctx,
 							      "SAMR LookupDomain failed: %s",
@@ -589,6 +595,9 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
 
 	/* do a samr_OpenDomain to get a domain handle */
 	status = dcerpc_samr_OpenDomain_r(samr_pipe->binding_handle, tmp_ctx, &od);
+	if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(od.out.result)) {
+		status = od.out.result;
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		r->out.error_string = talloc_asprintf(mem_ctx,
 						      "samr_OpenDomain for [%s] failed: %s",
@@ -611,6 +620,9 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
 
 	/* do a samr_CreateUser2 to get an account handle, or an error */
 	cu_status = dcerpc_samr_CreateUser2_r(samr_pipe->binding_handle, tmp_ctx, &cu);
+	if (NT_STATUS_IS_OK(cu_status) && !NT_STATUS_IS_OK(cu.out.result)) {
+		cu_status = cu.out.result;
+	}
 	status = cu_status;
 	if (NT_STATUS_EQUAL(status, NT_STATUS_USER_EXISTS)) {
 		/* prepare samr_LookupNames */
@@ -628,6 +640,9 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
 		
 		/* 5. do a samr_LookupNames to get the users rid */
 		status = dcerpc_samr_LookupNames_r(samr_pipe->binding_handle, tmp_ctx, &ln);
+		if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(ln.out.result)) {
+			status = ln.out.result;
+		}
 		if (!NT_STATUS_IS_OK(status)) {
 			r->out.error_string = talloc_asprintf(mem_ctx,
 						"samr_LookupNames for [%s] failed: %s",
@@ -656,6 +671,9 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
 		
 		/* 6. do a samr_OpenUser to get a user handle */
 		status = dcerpc_samr_OpenUser_r(samr_pipe->binding_handle, tmp_ctx, &ou);
+		if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(ou.out.result)) {
+			status = ou.out.result;
+		}
 		if (!NT_STATUS_IS_OK(status)) {
 			r->out.error_string = talloc_asprintf(mem_ctx,
 							"samr_OpenUser for [%s] failed: %s",
@@ -670,6 +688,9 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
 			d.in.user_handle = u_handle;
 			d.out.user_handle = u_handle;
 			status = dcerpc_samr_DeleteUser_r(samr_pipe->binding_handle, mem_ctx, &d);
+			if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(d.out.result)) {
+				status = d.out.result;
+			}
 			if (!NT_STATUS_IS_OK(status)) {
 				r->out.error_string = talloc_asprintf(mem_ctx,
 								      "samr_DeleteUser (for recreate) of [%s] failed: %s",
@@ -683,6 +704,9 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
 			
 			/* &cu filled in above */
 			status = dcerpc_samr_CreateUser2_r(samr_pipe->binding_handle, tmp_ctx, &cu);
+			if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(cu.out.result)) {
+				status = cu.out.result;
+			}
 			if (!NT_STATUS_IS_OK(status)) {
 				r->out.error_string = talloc_asprintf(mem_ctx,
 								      "samr_CreateUser2 (recreate) for [%s] failed: %s",
@@ -705,6 +729,9 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
 	qui.out.info = &uinfo;
 	
 	status = dcerpc_samr_QueryUserInfo_r(samr_pipe->binding_handle, tmp_ctx, &qui);
+	if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(qui.out.result)) {
+		status = qui.out.result;
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		r->out.error_string = talloc_asprintf(mem_ctx,
 						"samr_QueryUserInfo for [%s] failed: %s",
@@ -790,6 +817,9 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
 	pwp.out.info = &info;
 
 	status = dcerpc_samr_GetUserPwInfo_r(samr_pipe->binding_handle, tmp_ctx, &pwp);
+	if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(pwp.out.result)) {
+		status = pwp.out.result;
+	}
 	if (NT_STATUS_IS_OK(status)) {
 		policy_min_pw_len = pwp.out.info->min_password_length;
 	}
diff --git a/source4/libnet/libnet_passwd.c b/source4/libnet/libnet_passwd.c
index 3997fb2..93d126f 100644
--- a/source4/libnet/libnet_passwd.c
+++ b/source4/libnet/libnet_passwd.c
@@ -103,6 +103,9 @@ static NTSTATUS libnet_ChangePassword_samr(struct libnet_context *ctx, TALLOC_CT
 	/* 2. try samr_ChangePasswordUser3 */
 	status = dcerpc_samr_ChangePasswordUser3_r(c.out.dcerpc_pipe->binding_handle, mem_ctx, &pw3);
 	if (!NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+		if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(pw3.out.result)) {
+			status = pw3.out.result;
+		}
 		if (!NT_STATUS_IS_OK(status)) {
 			r->samr.out.error_string = talloc_asprintf(mem_ctx,
 								   "samr_ChangePasswordUser3 failed: %s",
@@ -135,6 +138,9 @@ static NTSTATUS libnet_ChangePassword_samr(struct libnet_context *ctx, TALLOC_CT
 	/* 3. try samr_ChangePasswordUser2 */
 	status = dcerpc_samr_ChangePasswordUser2_r(c.out.dcerpc_pipe->binding_handle, mem_ctx, &pw2);
 	if (!NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+		if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(pw2.out.result)) {
+			status = pw2.out.result;
+		}
 		if (!NT_STATUS_IS_OK(status)) {
 			r->samr.out.error_string = talloc_asprintf(mem_ctx,
 								   "samr_ChangePasswordUser2 for '%s\\%s' failed: %s",
@@ -161,6 +167,9 @@ static NTSTATUS libnet_ChangePassword_samr(struct libnet_context *ctx, TALLOC_CT
 	/* 4. try samr_OemChangePasswordUser2 */
 	status = dcerpc_samr_OemChangePasswordUser2_r(c.out.dcerpc_pipe->binding_handle, mem_ctx, &oe2);
 	if (!NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+		if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(oe2.out.result)) {
+			status = oe2.out.result;
+		}
 		if (!NT_STATUS_IS_OK(oe2.out.result)) {
 			r->samr.out.error_string = talloc_asprintf(mem_ctx,
 								   "samr_OemChangePasswordUser2 for '%s\\%s' failed: %s",
@@ -301,6 +310,9 @@ static NTSTATUS libnet_SetPassword_samr_handle_26(struct libnet_context *ctx, TA
 	/* 7. try samr_SetUserInfo2 level 26 to set the password */
 	status = dcerpc_samr_SetUserInfo2_r(r->samr_handle.in.dcerpc_pipe->binding_handle, mem_ctx, &sui);
 	/* check result of samr_SetUserInfo2 level 26 */
+	if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(sui.out.result)) {
+		status = sui.out.result;
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		r->samr_handle.out.error_string
 			= talloc_asprintf(mem_ctx,
@@ -354,6 +366,9 @@ static NTSTATUS libnet_SetPassword_samr_handle_25(struct libnet_context *ctx, TA
 
 	/* 8. try samr_SetUserInfo2 level 25 to set the password */
 	status = dcerpc_samr_SetUserInfo2_r(r->samr_handle.in.dcerpc_pipe->binding_handle, mem_ctx, &sui);
+	if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(sui.out.result)) {
+		status = sui.out.result;
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		r->samr_handle.out.error_string
 			= talloc_asprintf(mem_ctx,
@@ -395,6 +410,9 @@ static NTSTATUS libnet_SetPassword_samr_handle_24(struct libnet_context *ctx, TA
 
 	/* 9. try samr_SetUserInfo2 level 24 to set the password */
 	status = dcerpc_samr_SetUserInfo2_r(r->samr_handle.in.dcerpc_pipe->binding_handle, mem_ctx, &sui);
+	if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(sui.out.result)) {
+		status = sui.out.result;
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		r->samr_handle.out.error_string
 			= talloc_asprintf(mem_ctx,
@@ -438,6 +456,9 @@ static NTSTATUS libnet_SetPassword_samr_handle_23(struct libnet_context *ctx, TA
 
 	/* 10. try samr_SetUserInfo2 level 23 to set the password */
 	status = dcerpc_samr_SetUserInfo2_r(r->samr_handle.in.dcerpc_pipe->binding_handle, mem_ctx, &sui);
+	if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(sui.out.result)) {
+		status = sui.out.result;
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		r->samr_handle.out.error_string
 			= talloc_asprintf(mem_ctx,
@@ -530,6 +551,9 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
 
 	/* 2. do a samr_Connect to get a policy handle */
 	status = dcerpc_samr_Connect_r(c.out.dcerpc_pipe->binding_handle, mem_ctx, &sc);
+	if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(sc.out.result)) {
+		status = sc.out.result;
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		r->samr.out.error_string = talloc_asprintf(mem_ctx,
 						"samr_Connect failed: %s",
@@ -545,6 +569,9 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
 
 	/* 3. do a samr_LookupDomain to get the domain sid */
 	status = dcerpc_samr_LookupDomain_r(c.out.dcerpc_pipe->binding_handle, mem_ctx, &ld);
+	if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(ld.out.result)) {
+		status = ld.out.result;
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		r->samr.out.error_string = talloc_asprintf(mem_ctx,
 						"samr_LookupDomain for [%s] failed: %s",
@@ -561,6 +588,9 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
 
 	/* 4. do a samr_OpenDomain to get a domain handle */
 	status = dcerpc_samr_OpenDomain_r(c.out.dcerpc_pipe->binding_handle, mem_ctx, &od);
+	if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(od.out.result)) {
+		status = od.out.result;
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		r->samr.out.error_string = talloc_asprintf(mem_ctx,
 						"samr_OpenDomain for [%s] failed: %s",
@@ -582,6 +612,9 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
 
 	/* 5. do a samr_LookupNames to get the users rid */
 	status = dcerpc_samr_LookupNames_r(c.out.dcerpc_pipe->binding_handle, mem_ctx, &ln);
+	if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(ln.out.result)) {
+		status = ln.out.result;
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		r->samr.out.error_string = talloc_asprintf(mem_ctx,
 						"samr_LookupNames for [%s] failed: %s",
@@ -607,6 +640,9 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
 
 	/* 6. do a samr_OpenUser to get a user handle */
 	status = dcerpc_samr_OpenUser_r(c.out.dcerpc_pipe->binding_handle, mem_ctx, &ou);
+	if (NT_STATUS_IS_OK(status) && !NT_STATUS_IS_OK(ou.out.result)) {
+		status = ou.out.result;
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		r->samr.out.error_string = talloc_asprintf(mem_ctx,
 						"samr_OpenUser for [%s] failed: %s",
diff --git a/source4/libnet/libnet_samsync.c b/source4/libnet/libnet_samsync.c
index eb4c826..774451f 100644
--- a/source4/libnet/libnet_samsync.c
+++ b/source4/libnet/libnet_samsync.c
@@ -216,6 +216,9 @@ NTSTATUS libnet_SamSync_netlogon(struct libnet_context *ctx, TALLOC_CTX *mem_ctx
 			dbsync.in.credential = &credential;
 			
 			dbsync_nt_status = dcerpc_netr_DatabaseSync_r(p->binding_handle, loop_ctx, &dbsync);
+			if (NT_STATUS_IS_OK(dbsync_nt_status) && !NT_STATUS_IS_OK(dbsync.out.result)) {
+				dbsync_nt_status = dbsync.out.result;
+			}
 			if (!NT_STATUS_IS_OK(dbsync_nt_status) &&
 			    !NT_STATUS_EQUAL(dbsync_nt_status, STATUS_MORE_ENTRIES)) {
 				r->out.error_string = talloc_asprintf(mem_ctx, "DatabaseSync failed - %s", nt_errstr(nt_status));
diff --git a/source4/torture/libnet/domain.c b/source4/torture/libnet/domain.c
index 8c880be..110a2e8 100644
--- a/source4/torture/libnet/domain.c
+++ b/source4/torture/libnet/domain.c
@@ -52,7 +52,6 @@ static bool test_cleanup(struct torture_context *tctx,
 			 struct dcerpc_binding_handle *b, TALLOC_CTX *mem_ctx,
 			 struct policy_handle *domain_handle)
 {
-	NTSTATUS status;
 	struct samr_Close r;
 	struct policy_handle handle;
 
@@ -61,11 +60,11 @@ static bool test_cleanup(struct torture_context *tctx,
 
 	torture_comment(tctx, "closing domain handle\n");
 
-	status = dcerpc_samr_Close_r(b, mem_ctx, &r);
-	if (!NT_STATUS_IS_OK(status)) {
-		torture_comment(tctx, "Close failed - %s\n", nt_errstr(status));
-		return false;
-	}
+	torture_assert_ntstatus_ok(tctx,
+		dcerpc_samr_Close_r(b, mem_ctx, &r),
+		"Close failed");
+	torture_assert_ntstatus_ok(tctx, r.out.result,
+		"Close failed");
 
 	return true;
 }
diff --git a/source4/torture/libnet/libnet_domain.c b/source4/torture/libnet/libnet_domain.c
index bd0e1fa..a8e0842 100644
--- a/source4/torture/libnet/libnet_domain.c
+++ b/source4/torture/libnet/libnet_domain.c
@@ -33,7 +33,6 @@ static bool test_opendomain_samr(struct torture_context *tctx,
 				 struct policy_handle *handle, struct lsa_String *domname,
 				 uint32_t *access_mask, struct dom_sid **sid_p)
 {
-	NTSTATUS status;
 	struct policy_handle h, domain_handle;
 	struct samr_Connect r1;
 	struct samr_LookupDomain r2;
@@ -48,11 +47,11 @@ static bool test_opendomain_samr(struct torture_context *tctx,
 	r1.in.access_mask = *access_mask;
 	r1.out.connect_handle = &h;
 
-	status = dcerpc_samr_Connect_r(b, mem_ctx, &r1);
-	if (!NT_STATUS_IS_OK(status)) {
-		torture_comment(tctx, "Connect failed - %s\n", nt_errstr(status));
-		return false;
-	}
+	torture_assert_ntstatus_ok(tctx,
+		dcerpc_samr_Connect_r(b, mem_ctx, &r1),
+		"Connect failed");
+	torture_assert_ntstatus_ok(tctx, r1.out.result,
+		"Connect failed");
 
 	r2.in.connect_handle = &h;
 	r2.in.domain_name = domname;
@@ -60,11 +59,11 @@ static bool test_opendomain_samr(struct torture_context *tctx,
 
 	torture_comment(tctx, "domain lookup on %s\n", domname->string);
 
-	status = dcerpc_samr_LookupDomain_r(b, mem_ctx, &r2);
-	if (!NT_STATUS_IS_OK(status)) {
-		torture_comment(tctx, "LookupDomain failed - %s\n", nt_errstr(status));
-		return false;
-	}
+	torture_assert_ntstatus_ok(tctx,
+		dcerpc_samr_LookupDomain_r(b, mem_ctx, &r2),
+		"LookupDomain failed");
+	torture_assert_ntstatus_ok(tctx, r2.out.result,
+		"LookupDomain failed");
 
 	r3.in.connect_handle = &h;
 	r3.in.access_mask = *access_mask;
@@ -73,23 +72,23 @@ static bool test_opendomain_samr(struct torture_context *tctx,
 
 	torture_comment(tctx, "opening domain\n");
 
-	status = dcerpc_samr_OpenDomain_r(b, mem_ctx, &r3);
-	if (!NT_STATUS_IS_OK(status)) {
-		torture_comment(tctx, "OpenDomain failed - %s\n", nt_errstr(status));
-		return false;
-	} else {
-		*handle = domain_handle;
-	}
+	torture_assert_ntstatus_ok(tctx,
+		dcerpc_samr_OpenDomain_r(b, mem_ctx, &r3),
+		"OpenDomain failed");
+	torture_assert_ntstatus_ok(tctx, r3.out.result,
+		"OpenDomain failed");
+
+	*handle = domain_handle;
 
 	return true;
 }
 
 
-static bool test_opendomain_lsa(struct dcerpc_binding_handle *b, TALLOC_CTX *mem_ctx,
+static bool test_opendomain_lsa(struct torture_context *tctx,
+				struct dcerpc_binding_handle *b, TALLOC_CTX *mem_ctx,
 				struct policy_handle *handle, struct lsa_String *domname,
 				uint32_t *access_mask)
 {
-	NTSTATUS status;
 	struct lsa_OpenPolicy2 open;
 	struct lsa_ObjectAttribute attr;
 	struct lsa_QosInfo qos;
@@ -111,10 +110,11 @@ static bool test_opendomain_lsa(struct dcerpc_binding_handle *b, TALLOC_CTX *mem
 	open.in.access_mask = *access_mask;
 	open.out.handle     = handle;
 
-	status = dcerpc_lsa_OpenPolicy2_r(b, mem_ctx, &open);
-	if (!NT_STATUS_IS_OK(status)) {
-		return false;
-	}
+	torture_assert_ntstatus_ok(tctx,
+		dcerpc_lsa_OpenPolicy2_r(b, mem_ctx, &open),
+		"OpenPolicy2 failed");
+	torture_assert_ntstatus_ok(tctx, open.out.result,
+		"OpenPolicy2 failed");
 
 	return true;
 }
@@ -158,11 +158,11 @@ bool torture_domain_open_lsa(struct torture_context *torture)
 	lsa_close.in.handle  = &ctx->lsa.handle;
 	lsa_close.out.handle = &h;
 
-	status = dcerpc_lsa_Close_r(ctx->lsa.pipe->binding_handle, ctx, &lsa_close);
-	if (!NT_STATUS_IS_OK(status)) {
-		torture_comment(torture, "failed to close domain on lsa service: %s\n", nt_errstr(status));
-		ret = false;
-	}
+	torture_assert_ntstatus_ok(torture,
+		dcerpc_lsa_Close_r(ctx->lsa.pipe->binding_handle, ctx, &lsa_close),
+		"failed to close domain on lsa service");
+	torture_assert_ntstatus_ok(torture, lsa_close.out.result,
+		"failed to close domain on lsa service");
 
 done:
 	talloc_free(ctx);
@@ -208,7 +208,7 @@ bool torture_domain_close_lsa(struct torture_context *torture)
 
 	domain_name.string = lp_workgroup(torture->lp_ctx);
 
-	if (!test_opendomain_lsa(p->binding_handle, torture, &h, &domain_name, &access_mask)) {
+	if (!test_opendomain_lsa(torture, p->binding_handle, torture, &h, &domain_name, &access_mask)) {
 		torture_comment(torture, "failed to open domain on lsa service\n");
 		ret = false;
 		goto done;
@@ -283,12 +283,11 @@ bool torture_domain_open_samr(struct torture_context *torture)
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list