[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Thu Jan 14 16:55:01 MST 2010


The branch, master has been updated
       via  9d881f4... s4-smbtorture: add setup_schannel_netlogon_pipe() function.
      from  6653cc4... Fix bug #7036 - net rpc getsid fails in hardened windows environments.

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


- Log -----------------------------------------------------------------
commit 9d881f4cfbeddf0f4c66d0986f6fc9168f4891b0
Author: Günther Deschner <gd at samba.org>
Date:   Fri Jan 15 00:25:06 2010 +0100

    s4-smbtorture: add setup_schannel_netlogon_pipe() function.
    
    Guenther

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

Summary of changes:
 source4/torture/rpc/samr.c |   59 ++++++++++++++++++-------------------------
 1 files changed, 25 insertions(+), 34 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/torture/rpc/samr.c b/source4/torture/rpc/samr.c
index 8b466e8..0e76017 100644
--- a/source4/torture/rpc/samr.c
+++ b/source4/torture/rpc/samr.c
@@ -2951,6 +2951,29 @@ static bool test_SetPassword_level(struct dcerpc_pipe *p,
 	return ret;
 }
 
+static bool setup_schannel_netlogon_pipe(struct torture_context *tctx,
+					 struct cli_credentials *credentials,
+					 struct dcerpc_pipe **p)
+{
+	struct dcerpc_binding *b;
+
+	torture_assert_ntstatus_ok(tctx, torture_rpc_binding(tctx, &b),
+		"failed to get rpc binding");
+
+	/* We have to use schannel, otherwise the SamLogonEx fails
+	 * with INTERNAL_ERROR */
+
+	b->flags &= ~DCERPC_AUTH_OPTIONS;
+	b->flags |= DCERPC_SCHANNEL | DCERPC_SIGN | DCERPC_SCHANNEL_128;
+
+	torture_assert_ntstatus_ok(tctx,
+		dcerpc_pipe_connect_b(tctx, p, b, &ndr_table_netlogon,
+				      credentials, tctx->ev, tctx->lp_ctx),
+		"failed to bind to netlogon");
+
+	return true;
+}
+
 static bool test_SetPassword_pwdlastset(struct dcerpc_pipe *p,
 					struct torture_context *tctx,
 					uint32_t acct_flags,
@@ -2960,7 +2983,6 @@ static bool test_SetPassword_pwdlastset(struct dcerpc_pipe *p,
 					struct cli_credentials *machine_credentials)
 {
 	int s = 0, q = 0, f = 0, l = 0, z = 0;
-	struct dcerpc_binding *b;
 	bool ret = true;
 	int delay = 50000;
 	bool set_levels[] = { false, true };
@@ -2981,7 +3003,6 @@ static bool test_SetPassword_pwdlastset(struct dcerpc_pipe *p,
 		SAMR_FIELD_NT_PASSWORD_PRESENT | SAMR_FIELD_LM_PASSWORD_PRESENT | SAMR_FIELD_EXPIRED_FLAG,
 		SAMR_FIELD_NT_PASSWORD_PRESENT | SAMR_FIELD_LM_PASSWORD_PRESENT | SAMR_FIELD_LAST_PWD_CHANGE | SAMR_FIELD_EXPIRED_FLAG
 	};
-	NTSTATUS status;
 	struct dcerpc_pipe *np = NULL;
 
 	if (torture_setting_bool(tctx, "samba3", false)) {
@@ -2990,27 +3011,7 @@ static bool test_SetPassword_pwdlastset(struct dcerpc_pipe *p,
 			delay);
 	}
 
-	status = torture_rpc_binding(tctx, &b);
-	if (!NT_STATUS_IS_OK(status)) {
-		ret = false;
-		return ret;
-	}
-
-	/* We have to use schannel, otherwise the SamLogonEx fails
-	 * with INTERNAL_ERROR */
-
-	b->flags &= ~DCERPC_AUTH_OPTIONS;
-	b->flags |= DCERPC_SCHANNEL | DCERPC_SIGN | DCERPC_SCHANNEL_128;
-
-	status = dcerpc_pipe_connect_b(tctx, &np, b,
-				       &ndr_table_netlogon,
-				       machine_credentials, tctx->ev, tctx->lp_ctx);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		torture_warning(tctx, "RPC pipe connect as domain member failed: %s\n", nt_errstr(status));
-		ret = false;
-		return ret;
-	}
+	torture_assert(tctx, setup_schannel_netlogon_pipe(tctx, machine_credentials, &np), "");
 
 	/* set to 1 to enable testing for all possible opcode
 	   (SetUserInfo, SetUserInfo2, QueryUserInfo, QueryUserInfo2)
@@ -3660,7 +3661,6 @@ static bool test_Password_badpwdcount_wrap(struct dcerpc_pipe *p,
 	struct samr_DomInfo1 info1, _info1;
 	struct samr_DomInfo12 info12, _info12;
 	bool ret = true;
-	struct dcerpc_binding *b;
 	struct dcerpc_pipe *np;
 	int i;
 
@@ -3696,16 +3696,7 @@ static bool test_Password_badpwdcount_wrap(struct dcerpc_pipe *p,
 		},
 	};
 
-	/* setup netlogon schannel pipe */
-
-	torture_assert_ntstatus_ok(tctx, torture_rpc_binding(tctx, &b), "failed to obtain rpc binding");
-
-	b->flags &= ~DCERPC_AUTH_OPTIONS;
-	b->flags |= DCERPC_SCHANNEL | DCERPC_SIGN | DCERPC_SCHANNEL_128;
-
-	torture_assert_ntstatus_ok(tctx, dcerpc_pipe_connect_b(tctx, &np, b, &ndr_table_netlogon,
-							       machine_credentials, tctx->ev, tctx->lp_ctx),
-				   "failed to connect to NETLOGON pipe");
+	torture_assert(tctx, setup_schannel_netlogon_pipe(tctx, machine_credentials, &np), "");
 
 	/* backup old policies */
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list