diff options
author | Andreas Schneider <asn@samba.org> | 2012-06-29 17:59:17 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2012-07-06 10:00:58 +0200 |
commit | 1744e99d0a339824a4e73038dccd673920f0c7bb (patch) | |
tree | 4301f987575cd03f287f5d6ac9191ac48158f9ad /source4/rpc_server/lsa/lsa_lookup.c | |
parent | 997c780d24d8f59890ffe92c26107ff4f544a038 (diff) | |
download | samba-1744e99d0a339824a4e73038dccd673920f0c7bb.tar.gz samba-1744e99d0a339824a4e73038dccd673920f0c7bb.tar.bz2 samba-1744e99d0a339824a4e73038dccd673920f0c7bb.zip |
s4-lsarpc: DCERPC_FAULT_ACCESS_DENIED for np
Diffstat (limited to 'source4/rpc_server/lsa/lsa_lookup.c')
-rw-r--r-- | source4/rpc_server/lsa/lsa_lookup.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/source4/rpc_server/lsa/lsa_lookup.c b/source4/rpc_server/lsa/lsa_lookup.c index b96adaa13d..e8fd7920d4 100644 --- a/source4/rpc_server/lsa/lsa_lookup.c +++ b/source4/rpc_server/lsa/lsa_lookup.c @@ -639,9 +639,14 @@ NTSTATUS dcesrv_lsa_LookupSids2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct lsa_LookupSids2 *r) { + enum dcerpc_transport_t transport = dce_call->conn->endpoint->ep_description->transport; struct lsa_policy_state *state; struct dcesrv_handle *h; + if (transport != NCACN_NP && transport != NCALRPC) { + DCESRV_FAULT(DCERPC_FAULT_ACCESS_DENIED); + } + DCESRV_PULL_HANDLE(h, r->in.handle, LSA_HANDLE_POLICY); state = h->data; @@ -716,10 +721,15 @@ NTSTATUS dcesrv_lsa_LookupSids3(struct dcesrv_call_state *dce_call, NTSTATUS dcesrv_lsa_LookupSids(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct lsa_LookupSids *r) { + enum dcerpc_transport_t transport = dce_call->conn->endpoint->ep_description->transport; struct lsa_LookupSids2 r2; NTSTATUS status; uint32_t i; + if (transport != NCACN_NP && transport != NCALRPC) { + DCESRV_FAULT(DCERPC_FAULT_ACCESS_DENIED); + } + ZERO_STRUCT(r2); r2.in.handle = r->in.handle; @@ -849,9 +859,14 @@ NTSTATUS dcesrv_lsa_LookupNames3(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct lsa_LookupNames3 *r) { + enum dcerpc_transport_t transport = dce_call->conn->endpoint->ep_description->transport; struct lsa_policy_state *policy_state; struct dcesrv_handle *policy_handle; + if (transport != NCACN_NP && transport != NCALRPC) { + DCESRV_FAULT(DCERPC_FAULT_ACCESS_DENIED); + } + DCESRV_PULL_HANDLE(policy_handle, r->in.handle, LSA_HANDLE_POLICY); policy_state = policy_handle->data; @@ -926,12 +941,17 @@ NTSTATUS dcesrv_lsa_LookupNames2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct lsa_LookupNames2 *r) { + enum dcerpc_transport_t transport = dce_call->conn->endpoint->ep_description->transport; struct lsa_policy_state *state; struct dcesrv_handle *h; uint32_t i; struct loadparm_context *lp_ctx = dce_call->conn->dce_ctx->lp_ctx; struct lsa_RefDomainList *domains; + if (transport != NCACN_NP && transport != NCALRPC) { + DCESRV_FAULT(DCERPC_FAULT_ACCESS_DENIED); + } + *r->out.domains = NULL; DCESRV_PULL_HANDLE(h, r->in.handle, LSA_HANDLE_POLICY); @@ -1016,10 +1036,15 @@ NTSTATUS dcesrv_lsa_LookupNames2(struct dcesrv_call_state *dce_call, NTSTATUS dcesrv_lsa_LookupNames(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct lsa_LookupNames *r) { + enum dcerpc_transport_t transport = dce_call->conn->endpoint->ep_description->transport; struct lsa_LookupNames2 r2; NTSTATUS status; uint32_t i; + if (transport != NCACN_NP && transport != NCALRPC) { + DCESRV_FAULT(DCERPC_FAULT_ACCESS_DENIED); + } + ZERO_STRUCT(r2); r2.in.handle = r->in.handle; |