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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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 <me...@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