summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2018-11-21 18:00:29 +0100
committerJeremy Allison <jra@samba.org>2019-01-12 03:13:38 +0100
commit965abe8e1a55b2631ea3e8bf03134a567f02ac5c (patch)
tree03d41e6251fafd64ed2424a77a118715cf8ddb3f /source4
parent245a0ef73f87cdfbfe98c05dde1976c67272248c (diff)
downloadsamba-965abe8e1a55b2631ea3e8bf03134a567f02ac5c.tar.gz
s4:rpc_server/remote: introduce remote_get_private()
BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113 BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source4')
-rw-r--r--source4/rpc_server/remote/dcesrv_remote.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/source4/rpc_server/remote/dcesrv_remote.c b/source4/rpc_server/remote/dcesrv_remote.c
index 86d165bd6e2..17177096c29 100644
--- a/source4/rpc_server/remote/dcesrv_remote.c
+++ b/source4/rpc_server/remote/dcesrv_remote.c
@@ -180,6 +180,19 @@ static NTSTATUS remote_op_bind(struct dcesrv_call_state *dce_call, const struct
return NT_STATUS_OK;
}
+static NTSTATUS remote_get_private(struct dcesrv_call_state *dce_call,
+ struct dcesrv_remote_private **_priv)
+{
+ void *ptr = NULL;
+ struct dcesrv_remote_private *priv = NULL;
+
+ ptr = dce_call->context->private_data;
+ priv = talloc_get_type_abort(ptr, struct dcesrv_remote_private);
+
+ *_priv = priv;
+ return NT_STATUS_OK;
+}
+
static NTSTATUS remote_op_ndr_pull(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct ndr_pull *pull, void **r)
{
enum ndr_err_code ndr_err;
@@ -227,13 +240,18 @@ static void remote_op_dispatch_done(struct tevent_req *subreq);
static NTSTATUS remote_op_dispatch(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, void *r)
{
- struct dcesrv_remote_private *priv = talloc_get_type_abort(dce_call->context->private_data,
- struct dcesrv_remote_private);
+ struct dcesrv_remote_private *priv = NULL;
uint16_t opnum = dce_call->pkt.u.request.opnum;
const struct ndr_interface_table *table = dce_call->context->iface->private_data;
const struct ndr_interface_call *call;
const char *name;
struct tevent_req *subreq;
+ NTSTATUS status;
+
+ status = remote_get_private(dce_call, &priv);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
name = table->calls[opnum].name;
call = &table->calls[opnum];