summaryrefslogtreecommitdiffstats
path: root/source4/rpc_server
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2014-02-18 09:49:35 +0100
committerVolker Lendecke <vl@samba.org>2014-02-18 10:28:51 +0100
commitebf00688987c79798ffa97a2f04ea36c5c08af00 (patch)
tree36510d03c8de92515096a6c99844daf8aec10733 /source4/rpc_server
parent90222dcdfd3de148e1f3da00d40427fee9a38d63 (diff)
downloadsamba-ebf00688987c79798ffa97a2f04ea36c5c08af00.tar.gz
samba-ebf00688987c79798ffa97a2f04ea36c5c08af00.tar.xz
samba-ebf00688987c79798ffa97a2f04ea36c5c08af00.zip
Revert "dcesrv_unixinfo: No wbc_context required"
This reverts commit 5a4252789b54b6b270b3083f6e0732ba1fdd774b. Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'source4/rpc_server')
-rw-r--r--source4/rpc_server/unixinfo/dcesrv_unixinfo.c36
1 files changed, 32 insertions, 4 deletions
diff --git a/source4/rpc_server/unixinfo/dcesrv_unixinfo.c b/source4/rpc_server/unixinfo/dcesrv_unixinfo.c
index 10eda452d3f..821f53c495b 100644
--- a/source4/rpc_server/unixinfo/dcesrv_unixinfo.c
+++ b/source4/rpc_server/unixinfo/dcesrv_unixinfo.c
@@ -25,11 +25,30 @@
#include "libcli/wbclient/wbclient.h"
#include "system/passwd.h"
+static NTSTATUS dcerpc_unixinfo_bind(struct dcesrv_call_state *dce_call,
+ const struct dcesrv_interface *iface)
+{
+ struct wbc_context *wbc_ctx;
+
+ wbc_ctx = wbc_init(dce_call->context, dce_call->msg_ctx,
+ dce_call->event_ctx);
+ NT_STATUS_HAVE_NO_MEMORY(wbc_ctx);
+
+ dce_call->context->private_data = wbc_ctx;
+
+ return NT_STATUS_OK;
+}
+
+#define DCESRV_INTERFACE_UNIXINFO_BIND dcerpc_unixinfo_bind
+
static NTSTATUS dcesrv_unixinfo_SidToUid(struct dcesrv_call_state *dce_call,
TALLOC_CTX *mem_ctx,
struct unixinfo_SidToUid *r)
{
NTSTATUS status;
+ struct wbc_context *wbc_ctx = talloc_get_type_abort(
+ dce_call->context->private_data,
+ struct wbc_context);
struct id_map *ids;
DEBUG(5, ("dcesrv_unixinfo_SidToUid called\n"));
@@ -40,7 +59,7 @@ static NTSTATUS dcesrv_unixinfo_SidToUid(struct dcesrv_call_state *dce_call,
ids->sid = &r->in.sid;
ids->status = ID_UNKNOWN;
ZERO_STRUCT(ids->xid);
- status = wbc_sids_to_xids(dce_call->event_ctx, ids, 1);
+ status = wbc_sids_to_xids(wbc_ctx->event_ctx, ids, 1);
NT_STATUS_NOT_OK_RETURN(status);
if (ids->xid.type == ID_TYPE_BOTH ||
@@ -56,6 +75,9 @@ static NTSTATUS dcesrv_unixinfo_UidToSid(struct dcesrv_call_state *dce_call,
TALLOC_CTX *mem_ctx,
struct unixinfo_UidToSid *r)
{
+ struct wbc_context *wbc_ctx = talloc_get_type_abort(
+ dce_call->context->private_data,
+ struct wbc_context);
struct id_map *ids;
uint32_t uid;
NTSTATUS status;
@@ -77,7 +99,7 @@ static NTSTATUS dcesrv_unixinfo_UidToSid(struct dcesrv_call_state *dce_call,
ids->xid.id = uid;
ids->xid.type = ID_TYPE_UID;
- status = wbc_xids_to_sids(dce_call->event_ctx, ids, 1);
+ status = wbc_xids_to_sids(wbc_ctx->event_ctx, ids, 1);
NT_STATUS_NOT_OK_RETURN(status);
r->out.sid = ids->sid;
@@ -89,6 +111,9 @@ static NTSTATUS dcesrv_unixinfo_SidToGid(struct dcesrv_call_state *dce_call,
struct unixinfo_SidToGid *r)
{
NTSTATUS status;
+ struct wbc_context *wbc_ctx = talloc_get_type_abort(
+ dce_call->context->private_data,
+ struct wbc_context);
struct id_map *ids;
DEBUG(5, ("dcesrv_unixinfo_SidToGid called\n"));
@@ -99,7 +124,7 @@ static NTSTATUS dcesrv_unixinfo_SidToGid(struct dcesrv_call_state *dce_call,
ids->sid = &r->in.sid;
ids->status = ID_UNKNOWN;
ZERO_STRUCT(ids->xid);
- status = wbc_sids_to_xids(dce_call->event_ctx, ids, 1);
+ status = wbc_sids_to_xids(wbc_ctx->event_ctx, ids, 1);
NT_STATUS_NOT_OK_RETURN(status);
if (ids->xid.type == ID_TYPE_BOTH ||
@@ -115,6 +140,9 @@ static NTSTATUS dcesrv_unixinfo_GidToSid(struct dcesrv_call_state *dce_call,
TALLOC_CTX *mem_ctx,
struct unixinfo_GidToSid *r)
{
+ struct wbc_context *wbc_ctx = talloc_get_type_abort(
+ dce_call->context->private_data,
+ struct wbc_context);
struct id_map *ids;
uint32_t gid;
NTSTATUS status;
@@ -136,7 +164,7 @@ static NTSTATUS dcesrv_unixinfo_GidToSid(struct dcesrv_call_state *dce_call,
ids->xid.id = gid;
ids->xid.type = ID_TYPE_GID;
- status = wbc_xids_to_sids(dce_call->event_ctx, ids, 1);
+ status = wbc_xids_to_sids(wbc_ctx->event_ctx, ids, 1);
NT_STATUS_NOT_OK_RETURN(status);
r->out.sid = ids->sid;