s3/s4:netrEnumerateTrustedDomains - this call returns a "NTSTATUS" result
authorMatthias Dieter Wallnöfer <mdw@samba.org>
Mon, 31 May 2010 08:15:25 +0000 (10:15 +0200)
committerMatthias Dieter Wallnöfer <mdw@samba.org>
Mon, 31 May 2010 10:08:59 +0000 (12:08 +0200)
See MS-NRPC 3.5.5.6.3.

librpc/idl/netlogon.idl
source3/rpc_server/srv_netlog_nt.c
source3/rpcclient/cmd_netlogon.c
source4/rpc_server/netlogon/dcerpc_netlogon.c
source4/torture/rpc/netlogon.c

index 4bebb833742d8ca0761b3ff1605b3bf61e25b762..7670d345487f54633498636162f670ebb759c88b 100644 (file)
@@ -1080,7 +1080,7 @@ interface netlogon
                [size_is(length)] uint8 *data;
        } netr_Blob;
 
-       WERROR netr_NetrEnumerateTrustedDomains(
+       NTSTATUS netr_NetrEnumerateTrustedDomains(
                [in,unique] [string,charset(UTF16)] uint16 *server_name,
                [out,ref] netr_Blob *trusted_domains_blob
                );
index ec6ade661fb52d4049b6fc5c256ae6692e1e219c..f0b9babe0eebc7ac8d5589952eec1a2dea163dda 100644 (file)
@@ -384,8 +384,8 @@ WERROR _netr_LogonControl2Ex(pipes_struct *p,
  _netr_NetrEnumerateTrustedDomains
  *************************************************************************/
 
-WERROR _netr_NetrEnumerateTrustedDomains(pipes_struct *p,
-                                        struct netr_NetrEnumerateTrustedDomains *r)
+NTSTATUS _netr_NetrEnumerateTrustedDomains(pipes_struct *p,
+                                          struct netr_NetrEnumerateTrustedDomains *r)
 {
        NTSTATUS status;
        DATA_BLOB blob;
@@ -403,25 +403,25 @@ WERROR _netr_NetrEnumerateTrustedDomains(pipes_struct *p,
        unbecome_root();
 
        if (!NT_STATUS_IS_OK(status)) {
-               return ntstatus_to_werror(status);
+               return status;
        }
 
        trusted_domains = talloc_zero_array(p->mem_ctx, const char *, num_domains + 1);
        if (!trusted_domains) {
-               return WERR_NOMEM;
+               return NT_STATUS_NO_MEMORY;
        }
 
        for (i = 0; i < num_domains; i++) {
                trusted_domains[i] = talloc_strdup(trusted_domains, domains[i]->name);
                if (!trusted_domains[i]) {
                        TALLOC_FREE(trusted_domains);
-                       return WERR_NOMEM;
+                       return NT_STATUS_NO_MEMORY;
                }
        }
 
        if (!push_reg_multi_sz(trusted_domains, &blob, trusted_domains)) {
                TALLOC_FREE(trusted_domains);
-               return WERR_NOMEM;
+               return NT_STATUS_NO_MEMORY;
        }
 
        r->out.trusted_domains_blob->data = blob.data;
@@ -429,7 +429,7 @@ WERROR _netr_NetrEnumerateTrustedDomains(pipes_struct *p,
 
        DEBUG(6,("_netr_NetrEnumerateTrustedDomains: %d\n", __LINE__));
 
-       return WERR_OK;
+       return NT_STATUS_OK;
 }
 
 /******************************************************************
index 262975bc94c31d2e74f944764572e4b951653ab0..faa2bfff3efaf35cec28193d4a159659d06cc2d8 100644 (file)
@@ -938,19 +938,18 @@ static WERROR cmd_netlogon_dsr_getforesttrustinfo(struct rpc_pipe_client *cli,
        return werr;
 }
 
-static WERROR cmd_netlogon_enumtrusteddomains(struct rpc_pipe_client *cli,
-                                             TALLOC_CTX *mem_ctx, int argc,
-                                             const char **argv)
+static NTSTATUS cmd_netlogon_enumtrusteddomains(struct rpc_pipe_client *cli,
+                                               TALLOC_CTX *mem_ctx, int argc,
+                                               const char **argv)
 {
        NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
-       WERROR werr = WERR_GENERAL_FAILURE;
        const char *server_name = cli->desthost;
        struct netr_Blob blob;
 
 
        if (argc < 1 || argc > 3) {
                fprintf(stderr, "Usage: %s <server_name>\n", argv[0]);
-               return WERR_OK;
+               return NT_STATUS_OK;
        }
 
        if (argc >= 2) {
@@ -959,18 +958,15 @@ static WERROR cmd_netlogon_enumtrusteddomains(struct rpc_pipe_client *cli,
 
        status = rpccli_netr_NetrEnumerateTrustedDomains(cli, mem_ctx,
                                                         server_name,
-                                                        &blob,
-                                                        &werr);
+                                                        &blob);
        if (!NT_STATUS_IS_OK(status)) {
                goto done;
        }
 
-       if (W_ERROR_IS_OK(werr)) {
-               printf("success\n");
-               dump_data(1, blob.data, blob.length);
-       }
+       printf("success\n");
+       dump_data(1, blob.data, blob.length);
  done:
-       return werr;
+       return status;
 }
 
 static WERROR cmd_netlogon_enumtrusteddomainsex(struct rpc_pipe_client *cli,
@@ -1175,7 +1171,7 @@ struct cmd_set netlogon_commands[] = {
        { "dsr_enumtrustdom", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_enumtrustdom, &ndr_table_netlogon.syntax_id, NULL, "Enumerate trusted domains",     "" },
        { "dsenumdomtrusts",  RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_enumtrustdom, &ndr_table_netlogon.syntax_id, NULL, "Enumerate all trusted domains in an AD forest",     "" },
        { "deregisterdnsrecords", RPC_RTYPE_WERROR, NULL, cmd_netlogon_deregisterdnsrecords, &ndr_table_netlogon.syntax_id, NULL, "Deregister DNS records",     "" },
-       { "netrenumtrusteddomains", RPC_RTYPE_WERROR, NULL, cmd_netlogon_enumtrusteddomains, &ndr_table_netlogon.syntax_id, NULL, "Enumerate trusted domains",     "" },
+       { "netrenumtrusteddomains", RPC_RTYPE_NTSTATUS, cmd_netlogon_enumtrusteddomains, NULL, &ndr_table_netlogon.syntax_id, NULL, "Enumerate trusted domains",     "" },
        { "netrenumtrusteddomainsex", RPC_RTYPE_WERROR, NULL, cmd_netlogon_enumtrusteddomainsex, &ndr_table_netlogon.syntax_id, NULL, "Enumerate trusted domains",     "" },
        { "getdcsitecoverage", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getdcsitecoverage, &ndr_table_netlogon.syntax_id, NULL, "Get the Site-Coverage from a DC",     "" },
        { "database_redo", RPC_RTYPE_NTSTATUS, cmd_netlogon_database_redo, NULL, &ndr_table_netlogon.syntax_id, NULL, "Replicate single object from a DC",     "" },
index cfcb4f6aaa4b635abb30e2f41647dfb837c27434..8bfa44988e62f9c9131f36d46067935a0b6f2b4a 100644 (file)
@@ -1066,9 +1066,9 @@ static NTSTATUS dcesrv_netr_DatabaseRedo(struct dcesrv_call_state *dce_call, TAL
 
 
 /*
-  netr_NetrEnumerateTurstedDomains
+  netr_NetrEnumerateTrustedDomains
 */
-static WERROR dcesrv_netr_NetrEnumerateTrustedDomains(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+static NTSTATUS dcesrv_netr_NetrEnumerateTrustedDomains(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
                       struct netr_NetrEnumerateTrustedDomains *r)
 {
        DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
index b1d6d1b5572d76e92cfecdac4e7b36fce5454ce5..03de3bdc10375ff56a8a95f0261fb0de82175a69 100644 (file)
@@ -2139,7 +2139,7 @@ static bool test_netr_NetrEnumerateTrustedDomains(struct torture_context *tctx,
 
        status = dcerpc_netr_NetrEnumerateTrustedDomains_r(b, tctx, &r);
        torture_assert_ntstatus_ok(tctx, status, "netr_NetrEnumerateTrustedDomains");
-       torture_assert_werr_ok(tctx, r.out.result, "NetrEnumerateTrustedDomains");
+       torture_assert_ntstatus_ok(tctx, r.out.result, "NetrEnumerateTrustedDomains");
 
        return true;
 }