[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Thu Apr 15 03:35:40 MDT 2010


The branch, master has been updated
       via  e9d4f15... s4:torture/rpc/autoidl.c: check for NT_STATUS_RPC_* instead of p->last_fault_code
       via  51f7b13... s4:torture/rpc/dsgetinfo.c: check for NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE instead of DCERPC_FAULT_INVALID_TAG
       via  c85884e... s4:torture/rpc/spoolss.c: check for NT_STATUS_RPC_* instead of p->last_fault_code
       via  9846485... s4:torture/rpc/scanner.c: check for NT_STATUS_RPC_* instead of p->last_fault_code
       via  2aba845... s4:torture/rpc/samr.c: check for NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE instead of DCERPC_FAULT_OP_RNG_ERROR
       via  6f4218a... s4:torture/rpc/drsuapi.c: check for NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE instead of DCERPC_FAULT_INVALID_TAG
       via  1864cd8... s4:torture/rpc/countcalls.c: check for NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE instead of DCERPC_FAULT_OP_RNG_ERROR
       via  0cc24f2... s4:torture/rpc/alter_context: check for NT_STATUS_RPC_PROTOCOL_ERROR instead of DCERPC_NCA_S_PROTO_ERROR
       via  cf9d425... s4:torture/rpc/dssync.c: check for NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE instead of DCERPC_FAULT_OP_RNG_ERROR
       via  de94672... s4:torture/rpc/alter_context.c: check for NT_STATUS_RPC_BAD_STUB_DATA instead of NT_STATUS_NET_WRITE_FAULT
       via  bb4a958... s4:torture/rpc/handles.c: check for NT_STATUS_RPC_SS_CONTEXT_MISMATCH instead of DCERPC_FAULT_CONTEXT_MISMATCH
       via  34a6350... s4:torture/rpc/lsa.c: test for NT_STATUS_RPC_SS_CONTEXT_MISMATCH instead of NT_STATUS_NET_WRITE_FAULT
       via  61e53c0... s4:librpc/rpc/pyrpc.c: map NT_STATUS_NET_WRITE_FAULT to the matching NT_STATUS_RPC_* code
       via  a8e81c2... pidl:Samba4/NDR/Client: map NT_STATUS_NET_WRITE_FAULT to the matching NT_STATUS_RPC_* code
       via  fed16f4... librpc/rpc: add dcerpc_fault_to_nt_status()
       via  c0736c7... s4:torture/rpc: don't look at p->last_fault_code for debugging anymore
       via  1293712... s4:util/net/drs: don't look at p->last_fault_code for debugging anymore
       via  146ce6e... s4:libnet/libnet_join: don't look at p->last_fault_code for debugging anymore
      from  7f6cdad... s4:winbind: use WINBINDD_SOCKET_NAME instead of WINBINDD_SAMBA3_SOCKET

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


- Log -----------------------------------------------------------------
commit e9d4f1578cdbd03ddc63d22822483add20e753d4
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Apr 12 14:11:50 2010 +0200

    s4:torture/rpc/autoidl.c: check for NT_STATUS_RPC_* instead of p->last_fault_code
    
    metze

commit 51f7b1382b91053ae96b2cd14dae17ad6eea0df4
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Apr 13 21:48:36 2010 +0200

    s4:torture/rpc/dsgetinfo.c: check for NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE instead of DCERPC_FAULT_INVALID_TAG
    
    metze

commit c85884ecc889945721303818d6fa18081403b3c2
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Apr 12 14:14:29 2010 +0200

    s4:torture/rpc/spoolss.c: check for NT_STATUS_RPC_* instead of p->last_fault_code
    
    metze

commit 98464853f4c508ac26cd0f446dc1365b4c7668c7
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Apr 12 14:13:55 2010 +0200

    s4:torture/rpc/scanner.c: check for NT_STATUS_RPC_* instead of p->last_fault_code
    
    metze

commit 2aba84581616ebf58d3793c1213e2d8c652a2752
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Apr 12 14:13:27 2010 +0200

    s4:torture/rpc/samr.c: check for NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE instead of DCERPC_FAULT_OP_RNG_ERROR
    
    metze

commit 6f4218a4aa097c3b89224bd3cba2d9d2649f28d5
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Apr 12 14:12:30 2010 +0200

    s4:torture/rpc/drsuapi.c: check for NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE instead of DCERPC_FAULT_INVALID_TAG
    
    metze

commit 1864cd8fa79cf109460516973c67e785fd0a7644
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Apr 12 14:12:10 2010 +0200

    s4:torture/rpc/countcalls.c: check for NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE instead of DCERPC_FAULT_OP_RNG_ERROR
    
    metze

commit 0cc24f2f9b36241afd4240c5d312052f5010d014
Author: Stefan Metzmacher <metze at samba.org>
Date:   Sat Apr 10 11:04:04 2010 +0200

    s4:torture/rpc/alter_context: check for NT_STATUS_RPC_PROTOCOL_ERROR instead of DCERPC_NCA_S_PROTO_ERROR
    
    metze

commit cf9d425e3d9646c6b4ea1b57a39cca23dfd26ab7
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Mar 29 22:58:53 2010 +0200

    s4:torture/rpc/dssync.c: check for NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE instead of DCERPC_FAULT_OP_RNG_ERROR
    
    metze

commit de94672fe083e7a335846353c61b5c0aa08ac0b1
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Mar 29 22:45:05 2010 +0200

    s4:torture/rpc/alter_context.c: check for NT_STATUS_RPC_BAD_STUB_DATA instead of NT_STATUS_NET_WRITE_FAULT
    
    metze

commit bb4a958c6df8bdccc5e7f8ac332bac5784924a8a
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Mar 29 22:36:22 2010 +0200

    s4:torture/rpc/handles.c: check for NT_STATUS_RPC_SS_CONTEXT_MISMATCH instead of DCERPC_FAULT_CONTEXT_MISMATCH
    
    metze

commit 34a6350715ddeea88dbbd13b17858b0890d85630
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Mar 29 22:36:07 2010 +0200

    s4:torture/rpc/lsa.c: test for NT_STATUS_RPC_SS_CONTEXT_MISMATCH instead of NT_STATUS_NET_WRITE_FAULT
    
    metze

commit 61e53c078203ddb11c7f9f04492ade7d95d21f02
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Apr 12 14:10:24 2010 +0200

    s4:librpc/rpc/pyrpc.c: map NT_STATUS_NET_WRITE_FAULT to the matching NT_STATUS_RPC_* code
    
    metze

commit a8e81c25ebe7a673c2c6e046dd6a0a829c4af409
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Mar 29 22:35:37 2010 +0200

    pidl:Samba4/NDR/Client: map NT_STATUS_NET_WRITE_FAULT to the matching NT_STATUS_RPC_* code
    
    metze

commit fed16f4015f8209dc4705fc1464fc45a093d9349
Author: Stefan Metzmacher <metze at samba.org>
Date:   Sat Mar 20 11:31:55 2010 +0100

    librpc/rpc: add dcerpc_fault_to_nt_status()
    
    For now this only handles fault codes with we've seen yet
    and for which we have explicit torture checks.
    
    metze

commit c0736c70d6ab442055f998e7b1308a0536f99a95
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Apr 13 09:38:03 2010 +0200

    s4:torture/rpc: don't look at p->last_fault_code for debugging anymore
    
    metze

commit 1293712b7d098aca12d7d2e043dc8ee87fb02aec
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Apr 13 09:14:14 2010 +0200

    s4:util/net/drs: don't look at p->last_fault_code for debugging anymore
    
    metze

commit 146ce6ead122f6f4ab18998c91d1bbdd1c63d336
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Apr 13 09:12:52 2010 +0200

    s4:libnet/libnet_join: don't look at p->last_fault_code for debugging anymore
    
    metze

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

Summary of changes:
 librpc/rpc/dcerpc_error.c                 |   24 ++++++++++
 pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm  |    8 +++
 source4/libnet/libnet_join.c              |   69 ++++++++--------------------
 source4/librpc/rpc/dcerpc.h               |    1 +
 source4/librpc/rpc/pyrpc.c                |   10 +---
 source4/torture/rpc/alter_context.c       |    6 +--
 source4/torture/rpc/autoidl.c             |   18 ++++----
 source4/torture/rpc/countcalls.c          |    8 +---
 source4/torture/rpc/drsuapi.c             |    2 +-
 source4/torture/rpc/drsuapi.h             |    3 -
 source4/torture/rpc/drsuapi_cracknames.c  |   27 -----------
 source4/torture/rpc/dsgetinfo.c           |    5 +--
 source4/torture/rpc/dssync.c              |   14 +-----
 source4/torture/rpc/handles.c             |   54 ++++++-----------------
 source4/torture/rpc/lsa.c                 |    2 +-
 source4/torture/rpc/samr.c                |    3 +-
 source4/torture/rpc/scanner.c             |   10 ++---
 source4/torture/rpc/spoolss.c             |    8 +---
 source4/torture/rpc/testjoin.c            |    3 -
 source4/utils/net/drs/net_drs.c           |    3 -
 source4/utils/net/drs/net_drs_kcc.c       |    3 -
 source4/utils/net/drs/net_drs_replicate.c |    3 -
 source4/utils/net/drs/net_drs_showrepl.c  |    3 -
 23 files changed, 94 insertions(+), 193 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/rpc/dcerpc_error.c b/librpc/rpc/dcerpc_error.c
index 69cd08b..713e32e 100644
--- a/librpc/rpc/dcerpc_error.c
+++ b/librpc/rpc/dcerpc_error.c
@@ -95,3 +95,27 @@ _PUBLIC_ const char *dcerpc_errstr(TALLOC_CTX *mem_ctx, uint32_t fault_code)
 
 	return win_errstr(werr);
 }
+
+_PUBLIC_ NTSTATUS dcerpc_fault_to_nt_status(uint32_t fault_code)
+{
+	/* TODO: add more mappings */
+	switch (fault_code) {
+	case DCERPC_FAULT_OP_RNG_ERROR:
+		return NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE;
+	case DCERPC_FAULT_UNK_IF:
+		return NT_STATUS_RPC_UNKNOWN_IF;
+	case DCERPC_FAULT_NDR:
+		return NT_STATUS_RPC_BAD_STUB_DATA;
+	case DCERPC_FAULT_INVALID_TAG:
+		return NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE;
+	case DCERPC_FAULT_CONTEXT_MISMATCH:
+		return NT_STATUS_RPC_SS_CONTEXT_MISMATCH;
+	case DCERPC_FAULT_OTHER:
+		return NT_STATUS_RPC_CALL_FAILED;
+	case DCERPC_FAULT_ACCESS_DENIED:
+		return NT_STATUS_ACCESS_DENIED;
+	}
+
+	return NT_STATUS_RPC_PROTOCOL_ERROR;
+}
+
diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm
index 43fe611..189eb9e 100644
--- a/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm
@@ -60,6 +60,10 @@ sub ParseFunctionOldRecv($$$)
 
 	status = dcerpc_ndr_request_recv(rreq);
 
+	if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+		status = dcerpc_fault_to_nt_status(p->last_fault_code);
+	}
+
 	if (NT_STATUS_IS_OK(status) && (p->conn->flags & DCERPC_DEBUG_PRINT_OUT)) {
 		NDR_PRINT_OUT_DEBUG($name, r);
 	}
@@ -290,6 +294,10 @@ sub ParseFunction_r_Sync($$$)
 	status = dcerpc_ndr_request(p, NULL, &ndr_table_$interface->{NAME},
 				    NDR_$uname, mem_ctx, r);
 
+	if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+		status = dcerpc_fault_to_nt_status(p->last_fault_code);
+	}
+
 	if (NT_STATUS_IS_OK(status) && (p->conn->flags & DCERPC_DEBUG_PRINT_OUT)) {
 		NDR_PRINT_OUT_DEBUG($name, r);
 	}
diff --git a/source4/libnet/libnet_join.c b/source4/libnet/libnet_join.c
index f5cbda0..748a791 100644
--- a/source4/libnet/libnet_join.c
+++ b/source4/libnet/libnet_join.c
@@ -135,21 +135,12 @@ static NTSTATUS libnet_JoinADSDomain(struct libnet_context *ctx, struct libnet_J
 
 	status = dcerpc_drsuapi_DsBind_r(drsuapi_pipe->binding_handle, tmp_ctx, &r_drsuapi_bind);
 	if (!NT_STATUS_IS_OK(status)) {
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-			r->out.error_string
-				= talloc_asprintf(r,
-						  "dcerpc_drsuapi_DsBind failed - %s", 
-						  dcerpc_errstr(tmp_ctx, drsuapi_pipe->last_fault_code));
-			talloc_free(tmp_ctx);
-			return status;
-		} else {
-			r->out.error_string
-				= talloc_asprintf(r,
-						  "dcerpc_drsuapi_DsBind failed - %s", 
-						  nt_errstr(status));
-			talloc_free(tmp_ctx);
-			return status;
-		}
+		r->out.error_string
+			= talloc_asprintf(r,
+					  "dcerpc_drsuapi_DsBind failed - %s",
+					  nt_errstr(status));
+		talloc_free(tmp_ctx);
+		return status;
 	} else if (!W_ERROR_IS_OK(r_drsuapi_bind.out.result)) {
 		r->out.error_string
 				= talloc_asprintf(r,
@@ -193,23 +184,13 @@ static NTSTATUS libnet_JoinADSDomain(struct libnet_context *ctx, struct libnet_J
 
 	status = dcerpc_drsuapi_DsCrackNames_r(drsuapi_pipe->binding_handle, tmp_ctx, &r_crack_names);
 	if (!NT_STATUS_IS_OK(status)) {
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-			r->out.error_string
-				= talloc_asprintf(r,
-						  "dcerpc_drsuapi_DsCrackNames for [%s] failed - %s", 
-						  names[0].str,
-						  dcerpc_errstr(tmp_ctx, drsuapi_pipe->last_fault_code));
-			talloc_free(tmp_ctx);
-			return status;
-		} else {
-			r->out.error_string
-				= talloc_asprintf(r,
-						  "dcerpc_drsuapi_DsCrackNames for [%s] failed - %s", 
-						  names[0].str,
-						  nt_errstr(status));
-			talloc_free(tmp_ctx);
-			return status;
-		}
+		r->out.error_string
+			= talloc_asprintf(r,
+					  "dcerpc_drsuapi_DsCrackNames for [%s] failed - %s",
+					  names[0].str,
+					  nt_errstr(status));
+		talloc_free(tmp_ctx);
+		return status;
 	} else if (!W_ERROR_IS_OK(r_crack_names.out.result)) {
 		r->out.error_string
 				= talloc_asprintf(r,
@@ -354,23 +335,13 @@ static NTSTATUS libnet_JoinADSDomain(struct libnet_context *ctx, struct libnet_J
 
 	status = dcerpc_drsuapi_DsCrackNames_r(drsuapi_pipe->binding_handle, tmp_ctx, &r_crack_names);
 	if (!NT_STATUS_IS_OK(status)) {
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-			r->out.error_string
-				= talloc_asprintf(r,
-						  "dcerpc_drsuapi_DsCrackNames for [%s] failed - %s", 
-						  r->in.domain_name, 
-						  dcerpc_errstr(tmp_ctx, drsuapi_pipe->last_fault_code));
-			talloc_free(tmp_ctx);
-			return status;
-		} else {
-			r->out.error_string
-				= talloc_asprintf(r,
-						  "dcerpc_drsuapi_DsCrackNames for [%s] failed - %s", 
-						  r->in.domain_name, 
-						  nt_errstr(status));
-			talloc_free(tmp_ctx);
-			return status;
-		}
+		r->out.error_string
+			= talloc_asprintf(r,
+					  "dcerpc_drsuapi_DsCrackNames for [%s] failed - %s",
+					  r->in.domain_name,
+					  nt_errstr(status));
+		talloc_free(tmp_ctx);
+		return status;
 	} else if (!W_ERROR_IS_OK(r_crack_names.out.result)) {
 		r->out.error_string
 			= talloc_asprintf(r,
diff --git a/source4/librpc/rpc/dcerpc.h b/source4/librpc/rpc/dcerpc.h
index 22988e6..69de8c5 100644
--- a/source4/librpc/rpc/dcerpc.h
+++ b/source4/librpc/rpc/dcerpc.h
@@ -303,6 +303,7 @@ NTSTATUS dcerpc_pipe_connect_b(TALLOC_CTX *parent_ctx,
 			       struct tevent_context *ev,
 			       struct loadparm_context *lp_ctx);
 const char *dcerpc_errstr(TALLOC_CTX *mem_ctx, uint32_t fault_code);
+NTSTATUS dcerpc_fault_to_nt_status(uint32_t fault_code);
 
 NTSTATUS dcerpc_pipe_auth(TALLOC_CTX *mem_ctx,
 			  struct dcerpc_pipe **p, 
diff --git a/source4/librpc/rpc/pyrpc.c b/source4/librpc/rpc/pyrpc.c
index 718c749..10f1d4b 100644
--- a/source4/librpc/rpc/pyrpc.c
+++ b/source4/librpc/rpc/pyrpc.c
@@ -207,14 +207,10 @@ static PyMemberDef dcerpc_interface_members[] = {
 
 static void PyErr_SetDCERPCStatus(struct dcerpc_pipe *p, NTSTATUS status)
 {
-	if (p != NULL && NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-		const char *errstr = dcerpc_errstr(NULL, p->last_fault_code);
-		PyErr_SetObject(PyExc_RuntimeError, 
-			Py_BuildValue("(i,s)", p->last_fault_code,
-				      errstr));
-	} else {
-		PyErr_SetNTSTATUS(status);
+	if (p && NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+		status = dcerpc_fault_to_nt_status(p->last_fault_code);
 	}
+	PyErr_SetNTSTATUS(status);
 }
 
 static PyObject *py_iface_request(PyObject *self, PyObject *args, PyObject *kwargs)
diff --git a/source4/torture/rpc/alter_context.c b/source4/torture/rpc/alter_context.c
index 6401643..cbfe034 100644
--- a/source4/torture/rpc/alter_context.c
+++ b/source4/torture/rpc/alter_context.c
@@ -87,9 +87,7 @@ bool torture_rpc_alter_context(struct torture_context *torture)
 
 	torture_comment(torture, "Testing change of primary context\n");
 	status = dcerpc_alter_context(p, torture, &p2->syntax, &p2->transfer_syntax);
-	if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-		torture_assert_int_equal(torture, p->last_fault_code, DCERPC_NCA_S_PROTO_ERROR,
-					 "dcerpc_alter_context should generate a proto error");
+	if (NT_STATUS_EQUAL(status, NT_STATUS_RPC_PROTOCOL_ERROR)) {
 
 		ret &= test_lsa_OpenPolicy2_ex(p->binding_handle, torture, &handle,
 					       NT_STATUS_PIPE_DISCONNECTED);
@@ -98,7 +96,7 @@ bool torture_rpc_alter_context(struct torture_context *torture)
 	torture_assert_ntstatus_ok(torture, status, "dcerpc_alter_context failed");
 
 	torture_comment(torture, "Testing DSSETUP pipe operations - should fault\n");
-	ret &= test_DsRoleGetPrimaryDomainInformation_ext(torture, p, NT_STATUS_NET_WRITE_FAULT);
+	ret &= test_DsRoleGetPrimaryDomainInformation_ext(torture, p, NT_STATUS_RPC_BAD_STUB_DATA);
 
 	ret &= test_lsa_OpenPolicy2(p->binding_handle, torture, &handle);
 
diff --git a/source4/torture/rpc/autoidl.c b/source4/torture/rpc/autoidl.c
index abb09d4..77bb761 100644
--- a/source4/torture/rpc/autoidl.c
+++ b/source4/torture/rpc/autoidl.c
@@ -131,7 +131,7 @@ static void try_expand(struct torture_context *tctx, const struct ndr_interface_
 
 		status = dcerpc_request(p, NULL, opnum, tctx, &stub_in, &stub_out);
 
-		if (!NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+		if (NT_STATUS_IS_OK(status)) {
 			print_depth(depth);
 			printf("expand by %d gives %s\n", n, nt_errstr(status));
 			if (n >= 4) {
@@ -142,10 +142,10 @@ static void try_expand(struct torture_context *tctx, const struct ndr_interface_
 		} else {
 #if 0
 			print_depth(depth);
-			printf("expand by %d gives fault %s\n", n, dcerpc_errstr(tctx, p->last_fault_code));
+			printf("expand by %d gives fault %s\n", n, nt_errstr(status));
 #endif
 		}
-		if (p->last_fault_code == 5) {
+		if (NT_STATUS_EQUAL(status, NT_STATUS_ACCESS_DENIED)) {
 			reopen(tctx, &p, iface);
 		}
 	}
@@ -172,11 +172,11 @@ static void test_ptr_scan(struct torture_context *tctx, const struct ndr_interfa
 		SIVAL(stub_in.data, ofs, 1);
 		status = dcerpc_request(p, NULL, opnum, tctx, &stub_in, &stub_out);
 
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+		if (!NT_STATUS_IS_OK(status)) {
 			print_depth(depth);
 			printf("possible ptr at ofs %d - fault %s\n", 
-			       ofs-min_ofs, dcerpc_errstr(tctx, p->last_fault_code));
-			if (p->last_fault_code == 5) {
+			       ofs-min_ofs, nt_errstr(status));
+			if (NT_STATUS_EQUAL(status, NT_STATUS_ACCESS_DENIED)) {
 				reopen(tctx, &p, iface);
 			}
 			if (depth == 0) {
@@ -236,9 +236,9 @@ static void test_scan_call(struct torture_context *tctx, const struct ndr_interf
 			return;
 		}
 
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-			printf("opnum %d  size %d fault %s\n", opnum, i, dcerpc_errstr(tctx, p->last_fault_code));
-			if (p->last_fault_code == 5) {
+		if (!NT_STATUS_IS_OK(status)) {
+			printf("opnum %d  size %d fault %s\n", opnum, i, nt_errstr(status));
+			if (NT_STATUS_EQUAL(status, NT_STATUS_ACCESS_DENIED)) {
 				reopen(tctx, &p, iface);
 			}
 			continue;
diff --git a/source4/torture/rpc/countcalls.c b/source4/torture/rpc/countcalls.c
index e49ba6f..5857af6 100644
--- a/source4/torture/rpc/countcalls.c
+++ b/source4/torture/rpc/countcalls.c
@@ -59,13 +59,7 @@ bool count_calls(struct torture_context *tctx,
 
 	for (i=0;i<500;i++) {
 		status = dcerpc_request(p, NULL, i, p, &stub_in, &stub_out);
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT) &&
-		    p->last_fault_code == DCERPC_FAULT_OP_RNG_ERROR) {
-			i--;
-			break;
-		}
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT) &&
-		    p->last_fault_code == DCERPC_FAULT_OP_RNG_ERROR) {
+		if (NT_STATUS_EQUAL(status, NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE)) {
 			i--;
 			break;
 		}
diff --git a/source4/torture/rpc/drsuapi.c b/source4/torture/rpc/drsuapi.c
index a76ecab..105af1c 100644
--- a/source4/torture/rpc/drsuapi.c
+++ b/source4/torture/rpc/drsuapi.c
@@ -378,7 +378,7 @@ static bool test_DsReplicaGetInfo(struct torture_context *tctx,
 
 		status = dcerpc_drsuapi_DsReplicaGetInfo_r(p->binding_handle, tctx, &r);
 		torture_drsuapi_assert_call(tctx, p, status, &r, "dcerpc_drsuapi_DsReplicaGetInfo");
-		if (!NT_STATUS_IS_OK(status) && p->last_fault_code == DCERPC_FAULT_INVALID_TAG) {
+		if (NT_STATUS_EQUAL(status, NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE)) {
 			torture_comment(tctx,
 					"DsReplicaGetInfo level %d and/or infotype %d not supported by server\n",
 					array[i].level, array[i].infotype);
diff --git a/source4/torture/rpc/drsuapi.h b/source4/torture/rpc/drsuapi.h
index ba4c057..6ce3009 100644
--- a/source4/torture/rpc/drsuapi.h
+++ b/source4/torture/rpc/drsuapi.h
@@ -56,9 +56,6 @@ struct DsPrivate {
 		NTSTATUS __nt = _ntstat; \
 		if (!NT_STATUS_IS_OK(__nt)) { \
 			const char *errstr = nt_errstr(__nt); \
-			if (NT_STATUS_EQUAL(__nt, NT_STATUS_NET_WRITE_FAULT)) { \
-				errstr = dcerpc_errstr(_tctx, _p->last_fault_code); \
-			} \
 			torture_fail(tctx, talloc_asprintf(_tctx, "%s failed - %s", _msg, errstr)); \
 		} \
 		torture_assert_werr_equal(_tctx, (_pr)->out.result, _werr_expected, _msg); \
diff --git a/source4/torture/rpc/drsuapi_cracknames.c b/source4/torture/rpc/drsuapi_cracknames.c
index 58ce4f7..5eae0ad 100644
--- a/source4/torture/rpc/drsuapi_cracknames.c
+++ b/source4/torture/rpc/drsuapi_cracknames.c
@@ -90,9 +90,6 @@ static bool test_DsCrackNamesMatrix(struct torture_context *tctx,
 		status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
 		if (!NT_STATUS_IS_OK(status)) {
 			const char *errstr = nt_errstr(status);
-			if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-				errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-			}
 			err_msg = talloc_asprintf(mem_ctx,
 					"testing DsCrackNames (matrix prep) with name '%s' from format: %d desired format:%d failed - %s",
 					names[0].str, r.in.req->req1.format_offered, r.in.req->req1.format_desired, errstr);
@@ -175,9 +172,6 @@ static bool test_DsCrackNamesMatrix(struct torture_context *tctx,
 			status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
 			if (!NT_STATUS_IS_OK(status)) {
 				const char *errstr = nt_errstr(status);
-				if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-					errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-				}
 				err_msg = talloc_asprintf(mem_ctx,
 						"testing DsCrackNames (matrix) with name '%s' from format: %d desired format:%d failed - %s",
 						names[0].str, r.in.req->req1.format_offered, r.in.req->req1.format_desired, errstr);
@@ -285,9 +279,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
 	status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
 	if (!NT_STATUS_IS_OK(status)) {
 		const char *errstr = nt_errstr(status);
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-			errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-		}
 		err_msg = talloc_asprintf(mem_ctx, "dcerpc_drsuapi_DsCrackNames failed - %s", errstr);
 		torture_fail(tctx, err_msg);
 	} else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -310,9 +301,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
 	status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
 	if (!NT_STATUS_IS_OK(status)) {
 		const char *errstr = nt_errstr(status);
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-			errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-		}
 		err_msg = talloc_asprintf(mem_ctx, "dcerpc_drsuapi_DsCrackNames failed - %s", errstr);
 		torture_fail(tctx, err_msg);
 	} else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -336,9 +324,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
 	status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
 	if (!NT_STATUS_IS_OK(status)) {
 		const char *errstr = nt_errstr(status);
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-			errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-		}
 		err_msg = talloc_asprintf(mem_ctx, "dcerpc_drsuapi_DsCrackNames failed - %s", errstr);
 		torture_fail(tctx, err_msg);
 	} else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -384,9 +369,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
 	status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
 	if (!NT_STATUS_IS_OK(status)) {
 		const char *errstr = nt_errstr(status);
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-			errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-		}
 		err_msg = talloc_asprintf(mem_ctx, "dcerpc_drsuapi_DsCrackNames failed - %s", errstr);
 		torture_fail(tctx, err_msg);
 	} else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -410,9 +392,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
 	status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
 	if (!NT_STATUS_IS_OK(status)) {
 		const char *errstr = nt_errstr(status);
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-			errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-		}
 		err_msg = talloc_asprintf(mem_ctx, "dcerpc_drsuapi_DsCrackNames failed - %s", errstr);
 		torture_fail(tctx, err_msg);
 	} else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -436,9 +415,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
 	status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
 	if (!NT_STATUS_IS_OK(status)) {
 		const char *errstr = nt_errstr(status);
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-			errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-		}
 		err_msg = talloc_asprintf(mem_ctx, "dcerpc_drsuapi_DsCrackNames failed - %s", errstr);
 		torture_fail(tctx, err_msg);
 	} else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -956,9 +932,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
 			status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
 			if (!NT_STATUS_IS_OK(status)) {
 				const char *errstr = nt_errstr(status);
-				if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-					errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-				}
 				err_msg = talloc_asprintf(mem_ctx, "dcerpc_drsuapi_DsCrackNames failed - %s", errstr);
 				torture_fail(tctx, err_msg);
 			} else if (!W_ERROR_IS_OK(r.out.result)) {
diff --git a/source4/torture/rpc/dsgetinfo.c b/source4/torture/rpc/dsgetinfo.c
index 0184905..7d21022 100644
--- a/source4/torture/rpc/dsgetinfo.c
+++ b/source4/torture/rpc/dsgetinfo.c
@@ -170,9 +170,6 @@ static bool _test_DsBind(struct torture_context *tctx,
 	status = dcerpc_drsuapi_DsBind_r(b->drs_handle, ctx, &b->req);
 	if (!NT_STATUS_IS_OK(status)) {
 		const char *errstr = nt_errstr(status);
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-			errstr = dcerpc_errstr(ctx, b->drs_pipe->last_fault_code);
-		}
 		printf("dcerpc_drsuapi_DsBind failed - %s\n", errstr);
 		ret = false;
 	} else if (!W_ERROR_IS_OK(b->req.out.result)) {
@@ -345,7 +342,7 @@ static bool test_getinfo(struct torture_context *tctx,
 		r.out.info_type		= &info_type;
 
 		status = dcerpc_drsuapi_DsReplicaGetInfo_r(b, tctx, &r);
-		if (!NT_STATUS_IS_OK(status) && p->last_fault_code == DCERPC_FAULT_INVALID_TAG) {
+		if (NT_STATUS_EQUAL(status, NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE)) {
 			torture_comment(tctx,
 					"DsReplicaGetInfo level %d and/or infotype %d not supported by server\n",
 					array[i].level, array[i].infotype);
diff --git a/source4/torture/rpc/dssync.c b/source4/torture/rpc/dssync.c
index c791086..2e5edfd 100644
--- a/source4/torture/rpc/dssync.c
+++ b/source4/torture/rpc/dssync.c
@@ -209,9 +209,6 @@ static bool _test_DsBind(struct torture_context *tctx,
 	status = dcerpc_drsuapi_DsBind_r(b->drs_handle, ctx, &b->req);
 	if (!NT_STATUS_IS_OK(status)) {
 		const char *errstr = nt_errstr(status);
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-			errstr = dcerpc_errstr(ctx, b->drs_pipe->last_fault_code);
-		}
 		printf("dcerpc_drsuapi_DsBind failed - %s\n", errstr);
 		ret = false;
 	} else if (!W_ERROR_IS_OK(b->req.out.result)) {
@@ -349,9 +346,6 @@ static bool test_GetInfo(struct torture_context *tctx, struct DsSyncTest *ctx)
 	status = dcerpc_drsuapi_DsCrackNames_r(ctx->admin.drsuapi.drs_handle, ctx, &r);
 	if (!NT_STATUS_IS_OK(status)) {
 		const char *errstr = nt_errstr(status);
-		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-			errstr = dcerpc_errstr(ctx, ctx->admin.drsuapi.drs_pipe->last_fault_code);
-		}
 		printf("dcerpc_drsuapi_DsCrackNames failed - %s\n", errstr);
 		return false;
 	} else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -1023,12 +1017,8 @@ static bool test_FetchNT4Data(struct torture_context *tctx,
 			torture_skip(tctx, "DsGetNT4ChangeLog not supported by target server");
 		} else if (!NT_STATUS_IS_OK(status)) {
 			const char *errstr = nt_errstr(status);
-			if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-				struct dcerpc_pipe *p = ctx->new_dc.drsuapi.drs_pipe;
-				if (p->last_fault_code == DCERPC_FAULT_OP_RNG_ERROR) {
-					torture_skip(tctx, "DsGetNT4ChangeLog not supported by target server");
-				}
-				errstr = dcerpc_errstr(ctx, p->last_fault_code);
+			if (NT_STATUS_EQUAL(status, NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE)) {
+				torture_skip(tctx, "DsGetNT4ChangeLog not supported by target server");
 			}
 			torture_fail(tctx,
 				     talloc_asprintf(tctx, "dcerpc_drsuapi_DsGetNT4ChangeLog failed - %s\n",
diff --git a/source4/torture/rpc/handles.c b/source4/torture/rpc/handles.c
index 7476292..b99c267 100644
--- a/source4/torture/rpc/handles.c
+++ b/source4/torture/rpc/handles.c
@@ -82,9 +82,7 @@ static bool test_handles_lsa(struct torture_context *torture)
 	c.out.handle = &handle2;
 
 	status = dcerpc_lsa_Close_r(b2, mem_ctx, &c);
-	torture_assert_ntstatus_equal(torture, status, NT_STATUS_NET_WRITE_FAULT, 
-				      "closing policy handle on p2");
-	torture_assert_int_equal(torture, p2->last_fault_code, DCERPC_FAULT_CONTEXT_MISMATCH, 
+	torture_assert_ntstatus_equal(torture, status, NT_STATUS_RPC_SS_CONTEXT_MISMATCH,
 				      "closing policy handle on p2");
 
 	torture_assert_ntstatus_ok(torture, dcerpc_lsa_Close_r(b1, mem_ctx, &c),
@@ -92,11 +90,9 @@ static bool test_handles_lsa(struct torture_context *torture)
 	torture_assert_ntstatus_ok(torture, c.out.result, "closing policy handle on p1");
 
 	status = dcerpc_lsa_Close_r(b1, mem_ctx, &c);
-	torture_assert_ntstatus_equal(torture, status, NT_STATUS_NET_WRITE_FAULT, 
-				      "closing policy handle on p1 again");
-	torture_assert_int_equal(torture, p1->last_fault_code, DCERPC_FAULT_CONTEXT_MISMATCH, 
+	torture_assert_ntstatus_equal(torture, status, NT_STATUS_RPC_SS_CONTEXT_MISMATCH,
 				      "closing policy handle on p1 again");
-	
+
 	talloc_free(mem_ctx);
 
 	return true;
@@ -214,21 +210,15 @@ static bool test_handles_lsa_shared(struct torture_context *torture)
 
 	status = dcerpc_lsa_Close_r(b1, mem_ctx, &c);
 
-	torture_assert_ntstatus_equal(torture, status, NT_STATUS_NET_WRITE_FAULT, 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list