diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-05-04 06:07:52 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:51:44 -0500 |
commit | 21e6b1531b4e656af5962fdbeb671350f653fc26 (patch) | |
tree | da19a7700ea239f83782eb8f3ea5836945b145c3 /source4/rpc_server/samr | |
parent | 73744d1ed6ba3b2d003eb029b9e9a0296ce895e6 (diff) | |
download | samba-21e6b1531b4e656af5962fdbeb671350f653fc26.tar.gz samba-21e6b1531b4e656af5962fdbeb671350f653fc26.tar.bz2 samba-21e6b1531b4e656af5962fdbeb671350f653fc26.zip |
r464: a big improvement to the API for writing server-side RPC
servers. Previously the server pipe code needed to return the RPC
level status (nearly always "OK") and separately set the function call
return using r->out.result. All the programmers writing servers
(metze, jelmer and me) were often getting this wrong, by doing things
like "return NT_STATUS_NO_MEMORY" which was really quite meaningless
as there is no code like that at the dcerpc level.
I have now modified pidl to generate the necessary boilerplate so that
just returning the status you want from the function will work. So for
a NTSTATUS function you return NT_STATUS_XXX and from a WERROR
function you return WERR_XXX. If you really want to generate a DCERPC
level fault rather than just a return value in your function then you
should use the DCESRV_FAULT() macro which will correctly generate a
fault for you.
As a side effect, this also adds automatic type checking of all of our
server side rpc functions, which was impossible with the old API. When
I changed the API I found and fixed quite a few functions with the
wrong type information, so this is definately useful.
I have also changed the server side template generation to generate a
DCERPC "operation range error" by default when you have not yet filled
in a server side function. This allows us to correctly implement
functions in any order in our rpc pipe servers and give the client the
right information about the fault.
(This used to be commit a4df5c7cf88891a78d82c8d6d7f058d8485e73f0)
Diffstat (limited to 'source4/rpc_server/samr')
-rw-r--r-- | source4/rpc_server/samr/dcesrv_samr.c | 177 |
1 files changed, 74 insertions, 103 deletions
diff --git a/source4/rpc_server/samr/dcesrv_samr.c b/source4/rpc_server/samr/dcesrv_samr.c index e4dcf398a2..309f9f6eba 100644 --- a/source4/rpc_server/samr/dcesrv_samr.c +++ b/source4/rpc_server/samr/dcesrv_samr.c @@ -79,9 +79,8 @@ static NTSTATUS samr_Connect(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem /* make sure the sam database is accessible */ if (samdb_connect() != 0) { - r->out.result = NT_STATUS_INVALID_SYSTEM_SERVICE; talloc_destroy(state->mem_ctx); - return NT_STATUS_OK; + return NT_STATUS_INVALID_SYSTEM_SERVICE; } handle = dcesrv_handle_new(dce_call->conn, SAMR_HANDLE_CONNECT); @@ -95,7 +94,6 @@ static NTSTATUS samr_Connect(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem state->access_mask = r->in.access_mask; *r->out.handle = handle->wire_handle; - r->out.result = NT_STATUS_OK; return NT_STATUS_OK; } @@ -110,16 +108,13 @@ static NTSTATUS samr_Close(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_c struct dcesrv_handle *h = dcesrv_handle_fetch(dce_call->conn, r->in.handle, DCESRV_HANDLE_ANY); - if (!h) { - return NT_STATUS_INVALID_HANDLE; - } + DCESRV_CHECK_HANDLE(h); /* this causes the callback samr_XXX_destroy() to be called by the handle destroy code which destroys the state associated with the handle */ dcesrv_handle_destroy(dce_call->conn, h); - r->out.result = NT_STATUS_OK; ZERO_STRUCTP(r->out.handle); return NT_STATUS_OK; @@ -132,7 +127,7 @@ static NTSTATUS samr_Close(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_c static NTSTATUS samr_SetSecurity(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_SetSecurity *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -142,7 +137,7 @@ static NTSTATUS samr_SetSecurity(struct dcesrv_call_state *dce_call, TALLOC_CTX static NTSTATUS samr_QuerySecurity(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_QuerySecurity *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -172,35 +167,30 @@ static NTSTATUS samr_LookupDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX const char *sidstr; h = dcesrv_handle_fetch(dce_call->conn, r->in.handle, SAMR_HANDLE_CONNECT); - if (!h) { - return NT_STATUS_INVALID_HANDLE; - } + + DCESRV_CHECK_HANDLE(h); r->out.sid = NULL; if (r->in.domain->name == NULL) { - r->out.result = NT_STATUS_INVALID_PARAMETER; - return NT_STATUS_OK; + return NT_STATUS_INVALID_PARAMETER; } sidstr = samdb_search_string(mem_ctx, "objectSid", "(&(name=%s)(objectclass=domain))", r->in.domain->name); if (sidstr == NULL) { - r->out.result = NT_STATUS_NO_SUCH_DOMAIN; - return NT_STATUS_OK; + return NT_STATUS_NO_SUCH_DOMAIN; } sid = dom_sid_parse_talloc(mem_ctx, sidstr); if (sid == NULL) { DEBUG(1,("samdb: Invalid sid '%s' for domain %s\n", sidstr, r->in.domain->name)); - r->out.result = NT_STATUS_INTERNAL_DB_CORRUPTION; - return NT_STATUS_OK; + return NT_STATUS_INTERNAL_DB_CORRUPTION; } r->out.sid = sid; - r->out.result = NT_STATUS_OK; return NT_STATUS_OK; } @@ -220,9 +210,8 @@ static NTSTATUS samr_EnumDomains(struct dcesrv_call_state *dce_call, TALLOC_CTX int count, i, start_i; h = dcesrv_handle_fetch(dce_call->conn, r->in.handle, SAMR_HANDLE_CONNECT); - if (!h) { - return NT_STATUS_INVALID_HANDLE; - } + + DCESRV_CHECK_HANDLE(h); *r->out.resume_handle = 0; r->out.sam = NULL; @@ -232,8 +221,7 @@ static NTSTATUS samr_EnumDomains(struct dcesrv_call_state *dce_call, TALLOC_CTX "name", "(objectclass=domain)"); if (count == -1) { DEBUG(1,("samdb: no domains found in EnumDomains\n")); - r->out.result = NT_STATUS_INTERNAL_DB_CORRUPTION; - return NT_STATUS_OK; + return NT_STATUS_INTERNAL_DB_CORRUPTION; } *r->out.resume_handle = count; @@ -242,14 +230,12 @@ static NTSTATUS samr_EnumDomains(struct dcesrv_call_state *dce_call, TALLOC_CTX if (start_i >= count) { /* search past end of list is not an error for this call */ - r->out.result = NT_STATUS_OK; return NT_STATUS_OK; } array = talloc_p(mem_ctx, struct samr_SamArray); if (array == NULL) { - r->out.result = NT_STATUS_NO_MEMORY; - return NT_STATUS_OK; + return NT_STATUS_NO_MEMORY; } array->count = 0; @@ -257,8 +243,7 @@ static NTSTATUS samr_EnumDomains(struct dcesrv_call_state *dce_call, TALLOC_CTX array->entries = talloc_array_p(mem_ctx, struct samr_SamEntry, count - start_i); if (array->entries == NULL) { - r->out.result = NT_STATUS_NO_MEMORY; - return NT_STATUS_OK; + return NT_STATUS_NO_MEMORY; } for (i=0;i<count-start_i;i++) { @@ -269,7 +254,6 @@ static NTSTATUS samr_EnumDomains(struct dcesrv_call_state *dce_call, TALLOC_CTX r->out.sam = array; r->out.num_entries = i - start_i; array->count = r->out.num_entries; - r->out.result = NT_STATUS_OK; return NT_STATUS_OK; } @@ -281,7 +265,7 @@ static NTSTATUS samr_EnumDomains(struct dcesrv_call_state *dce_call, TALLOC_CTX static NTSTATUS samr_OpenDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_OpenDomain *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -291,7 +275,7 @@ static NTSTATUS samr_OpenDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX * static NTSTATUS samr_QueryDomainInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_QueryDomainInfo *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -301,7 +285,7 @@ static NTSTATUS samr_QueryDomainInfo(struct dcesrv_call_state *dce_call, TALLOC_ static NTSTATUS samr_SetDomainInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_SetDomainInfo *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -311,7 +295,7 @@ static NTSTATUS samr_SetDomainInfo(struct dcesrv_call_state *dce_call, TALLOC_CT static NTSTATUS samr_CreateDomainGroup(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_CreateDomainGroup *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -321,7 +305,7 @@ static NTSTATUS samr_CreateDomainGroup(struct dcesrv_call_state *dce_call, TALLO static NTSTATUS samr_EnumDomainGroups(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_EnumDomainGroups *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -331,7 +315,7 @@ static NTSTATUS samr_EnumDomainGroups(struct dcesrv_call_state *dce_call, TALLOC static NTSTATUS samr_CreateUser(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_CreateUser *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -341,7 +325,7 @@ static NTSTATUS samr_CreateUser(struct dcesrv_call_state *dce_call, TALLOC_CTX * static NTSTATUS samr_EnumDomainUsers(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_EnumDomainUsers *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -351,7 +335,7 @@ static NTSTATUS samr_EnumDomainUsers(struct dcesrv_call_state *dce_call, TALLOC_ static NTSTATUS samr_CreateDomAlias(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_CreateDomAlias *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -361,7 +345,7 @@ static NTSTATUS samr_CreateDomAlias(struct dcesrv_call_state *dce_call, TALLOC_C static NTSTATUS samr_EnumDomainAliases(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_EnumDomainAliases *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -371,7 +355,7 @@ static NTSTATUS samr_EnumDomainAliases(struct dcesrv_call_state *dce_call, TALLO static NTSTATUS samr_GetAliasMembership(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_GetAliasMembership *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -381,7 +365,7 @@ static NTSTATUS samr_GetAliasMembership(struct dcesrv_call_state *dce_call, TALL static NTSTATUS samr_LookupNames(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_LookupNames *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -391,7 +375,7 @@ static NTSTATUS samr_LookupNames(struct dcesrv_call_state *dce_call, TALLOC_CTX static NTSTATUS samr_LookupRids(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_LookupRids *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -401,7 +385,7 @@ static NTSTATUS samr_LookupRids(struct dcesrv_call_state *dce_call, TALLOC_CTX * static NTSTATUS samr_OpenGroup(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_OpenGroup *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -411,7 +395,7 @@ static NTSTATUS samr_OpenGroup(struct dcesrv_call_state *dce_call, TALLOC_CTX *m static NTSTATUS samr_QueryGroupInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_QueryGroupInfo *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -421,7 +405,7 @@ static NTSTATUS samr_QueryGroupInfo(struct dcesrv_call_state *dce_call, TALLOC_C static NTSTATUS samr_SetGroupInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_SetGroupInfo *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -431,7 +415,7 @@ static NTSTATUS samr_SetGroupInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX static NTSTATUS samr_AddGroupMember(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_AddGroupMember *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -441,7 +425,7 @@ static NTSTATUS samr_AddGroupMember(struct dcesrv_call_state *dce_call, TALLOC_C static NTSTATUS samr_DeleteDomainGroup(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_DeleteDomainGroup *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -451,7 +435,7 @@ static NTSTATUS samr_DeleteDomainGroup(struct dcesrv_call_state *dce_call, TALLO static NTSTATUS samr_DeleteGroupMember(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_DeleteGroupMember *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -461,7 +445,7 @@ static NTSTATUS samr_DeleteGroupMember(struct dcesrv_call_state *dce_call, TALLO static NTSTATUS samr_QueryGroupMember(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_QueryGroupMember *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -471,7 +455,7 @@ static NTSTATUS samr_QueryGroupMember(struct dcesrv_call_state *dce_call, TALLOC static NTSTATUS samr_SetMemberAttributesOfGroup(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_SetMemberAttributesOfGroup *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -481,7 +465,7 @@ static NTSTATUS samr_SetMemberAttributesOfGroup(struct dcesrv_call_state *dce_ca static NTSTATUS samr_OpenAlias(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_OpenAlias *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -491,7 +475,7 @@ static NTSTATUS samr_OpenAlias(struct dcesrv_call_state *dce_call, TALLOC_CTX *m static NTSTATUS samr_QueryAliasInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_QueryAliasInfo *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -501,7 +485,7 @@ static NTSTATUS samr_QueryAliasInfo(struct dcesrv_call_state *dce_call, TALLOC_C static NTSTATUS samr_SetAliasInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_SetAliasInfo *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -511,7 +495,7 @@ static NTSTATUS samr_SetAliasInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX static NTSTATUS samr_DeleteDomAlias(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_DeleteDomAlias *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -521,7 +505,7 @@ static NTSTATUS samr_DeleteDomAlias(struct dcesrv_call_state *dce_call, TALLOC_C static NTSTATUS samr_AddAliasMember(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_AddAliasMember *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -531,7 +515,7 @@ static NTSTATUS samr_AddAliasMember(struct dcesrv_call_state *dce_call, TALLOC_C static NTSTATUS samr_DeleteAliasMember(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_DeleteAliasMember *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -541,7 +525,7 @@ static NTSTATUS samr_DeleteAliasMember(struct dcesrv_call_state *dce_call, TALLO static NTSTATUS samr_GetMembersInAlias(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_GetMembersInAlias *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -551,7 +535,7 @@ static NTSTATUS samr_GetMembersInAlias(struct dcesrv_call_state *dce_call, TALLO static NTSTATUS samr_OpenUser(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_OpenUser *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -561,7 +545,7 @@ static NTSTATUS samr_OpenUser(struct dcesrv_call_state *dce_call, TALLOC_CTX *me static NTSTATUS samr_DeleteUser(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_DeleteUser *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -571,7 +555,7 @@ static NTSTATUS samr_DeleteUser(struct dcesrv_call_state *dce_call, TALLOC_CTX * static NTSTATUS samr_QueryUserInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_QueryUserInfo *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -581,7 +565,7 @@ static NTSTATUS samr_QueryUserInfo(struct dcesrv_call_state *dce_call, TALLOC_CT static NTSTATUS samr_SetUserInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_SetUserInfo *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -591,7 +575,7 @@ static NTSTATUS samr_SetUserInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX static NTSTATUS samr_ChangePasswordUser(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_ChangePasswordUser *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -601,7 +585,7 @@ static NTSTATUS samr_ChangePasswordUser(struct dcesrv_call_state *dce_call, TALL static NTSTATUS samr_GetGroupsForUser(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_GetGroupsForUser *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -611,7 +595,7 @@ static NTSTATUS samr_GetGroupsForUser(struct dcesrv_call_state *dce_call, TALLOC static NTSTATUS samr_QueryDisplayInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_QueryDisplayInfo *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -621,7 +605,7 @@ static NTSTATUS samr_QueryDisplayInfo(struct dcesrv_call_state *dce_call, TALLOC static NTSTATUS samr_GetDisplayEnumerationIndex(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_GetDisplayEnumerationIndex *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -631,7 +615,7 @@ static NTSTATUS samr_GetDisplayEnumerationIndex(struct dcesrv_call_state *dce_ca static NTSTATUS samr_TestPrivateFunctionsDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_TestPrivateFunctionsDomain *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -641,7 +625,7 @@ static NTSTATUS samr_TestPrivateFunctionsDomain(struct dcesrv_call_state *dce_ca static NTSTATUS samr_TestPrivateFunctionsUser(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_TestPrivateFunctionsUser *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -651,7 +635,7 @@ static NTSTATUS samr_TestPrivateFunctionsUser(struct dcesrv_call_state *dce_call static NTSTATUS samr_GetUserPwInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_GetUserPwInfo *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -661,7 +645,7 @@ static NTSTATUS samr_GetUserPwInfo(struct dcesrv_call_state *dce_call, TALLOC_CT static NTSTATUS samr_RemoveMemberFromForeignDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_RemoveMemberFromForeignDomain *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -671,7 +655,7 @@ static NTSTATUS samr_RemoveMemberFromForeignDomain(struct dcesrv_call_state *dce static NTSTATUS samr_QueryDomainInfo2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_QueryDomainInfo2 *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -681,7 +665,7 @@ static NTSTATUS samr_QueryDomainInfo2(struct dcesrv_call_state *dce_call, TALLOC static NTSTATUS samr_QueryUserInfo2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_QueryUserInfo2 *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -691,7 +675,7 @@ static NTSTATUS samr_QueryUserInfo2(struct dcesrv_call_state *dce_call, TALLOC_C static NTSTATUS samr_QueryDisplayInfo2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_QueryDisplayInfo2 *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -701,7 +685,7 @@ static NTSTATUS samr_QueryDisplayInfo2(struct dcesrv_call_state *dce_call, TALLO static NTSTATUS samr_GetDisplayEnumerationIndex2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_GetDisplayEnumerationIndex2 *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -711,7 +695,7 @@ static NTSTATUS samr_GetDisplayEnumerationIndex2(struct dcesrv_call_state *dce_c static NTSTATUS samr_CreateUser2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_CreateUser2 *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -721,7 +705,7 @@ static NTSTATUS samr_CreateUser2(struct dcesrv_call_state *dce_call, TALLOC_CTX static NTSTATUS samr_QueryDisplayInfo3(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_QueryDisplayInfo3 *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -731,7 +715,7 @@ static NTSTATUS samr_QueryDisplayInfo3(struct dcesrv_call_state *dce_call, TALLO static NTSTATUS samr_AddMultipleMembersToAlias(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_AddMultipleMembersToAlias *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -741,7 +725,7 @@ static NTSTATUS samr_AddMultipleMembersToAlias(struct dcesrv_call_state *dce_cal static NTSTATUS samr_RemoveMultipleMembersFromAlias(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_RemoveMultipleMembersFromAlias *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -751,7 +735,7 @@ static NTSTATUS samr_RemoveMultipleMembersFromAlias(struct dcesrv_call_state *dc static NTSTATUS samr_OemChangePasswordUser2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_OemChangePasswordUser2 *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -761,7 +745,7 @@ static NTSTATUS samr_OemChangePasswordUser2(struct dcesrv_call_state *dce_call, static NTSTATUS samr_ChangePasswordUser2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_ChangePasswordUser2 *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -771,7 +755,7 @@ static NTSTATUS samr_ChangePasswordUser2(struct dcesrv_call_state *dce_call, TAL static NTSTATUS samr_GetDomPwInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_GetDomPwInfo *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -782,16 +766,12 @@ static NTSTATUS samr_Connect2(struct dcesrv_call_state *dce_call, TALLOC_CTX *me struct samr_Connect2 *r) { struct samr_Connect c; - NTSTATUS status; c.in.system_name = NULL; c.in.access_mask = r->in.access_mask; c.out.handle = r->out.handle; - status = samr_Connect(dce_call, mem_ctx, &c); - r->out.result = c.out.result; - - return status; + return samr_Connect(dce_call, mem_ctx, &c); } @@ -801,7 +781,7 @@ static NTSTATUS samr_Connect2(struct dcesrv_call_state *dce_call, TALLOC_CTX *me static NTSTATUS samr_SetUserInfo2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_SetUserInfo2 *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -811,7 +791,7 @@ static NTSTATUS samr_SetUserInfo2(struct dcesrv_call_state *dce_call, TALLOC_CTX static NTSTATUS samr_SetBootKeyInformation(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_SetBootKeyInformation *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -821,7 +801,7 @@ static NTSTATUS samr_SetBootKeyInformation(struct dcesrv_call_state *dce_call, T static NTSTATUS samr_GetBootKeyInformation(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_GetBootKeyInformation *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -832,16 +812,12 @@ static NTSTATUS samr_Connect3(struct dcesrv_call_state *dce_call, TALLOC_CTX *me struct samr_Connect3 *r) { struct samr_Connect c; - NTSTATUS status; c.in.system_name = NULL; c.in.access_mask = r->in.access_mask; c.out.handle = r->out.handle; - status = samr_Connect(dce_call, mem_ctx, &c); - r->out.result = c.out.result; - - return status; + return samr_Connect(dce_call, mem_ctx, &c); } @@ -852,16 +828,12 @@ static NTSTATUS samr_Connect4(struct dcesrv_call_state *dce_call, TALLOC_CTX *me struct samr_Connect4 *r) { struct samr_Connect c; - NTSTATUS status; c.in.system_name = NULL; c.in.access_mask = r->in.access_mask; c.out.handle = r->out.handle; - status = samr_Connect(dce_call, mem_ctx, &c); - r->out.result = c.out.result; - - return status; + return samr_Connect(dce_call, mem_ctx, &c); } @@ -871,7 +843,7 @@ static NTSTATUS samr_Connect4(struct dcesrv_call_state *dce_call, TALLOC_CTX *me static NTSTATUS samr_ChangePasswordUser3(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_ChangePasswordUser3 *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -893,7 +865,6 @@ static NTSTATUS samr_Connect5(struct dcesrv_call_state *dce_call, TALLOC_CTX *me r->out.info->info1.unknown1 = 3; r->out.info->info1.unknown2 = 0; r->out.level = r->in.level; - r->out.result = c.out.result; return status; } @@ -905,7 +876,7 @@ static NTSTATUS samr_Connect5(struct dcesrv_call_state *dce_call, TALLOC_CTX *me static NTSTATUS samr_RidToSid(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_RidToSid *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -915,7 +886,7 @@ static NTSTATUS samr_RidToSid(struct dcesrv_call_state *dce_call, TALLOC_CTX *me static NTSTATUS samr_SetDsrmPassword(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_SetDsrmPassword *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -925,7 +896,7 @@ static NTSTATUS samr_SetDsrmPassword(struct dcesrv_call_state *dce_call, TALLOC_ static NTSTATUS samr_ValidatePassword(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct samr_ValidatePassword *r) { - return NT_STATUS_NOT_IMPLEMENTED; + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } |