diff options
author | Volker Lendecke <vl@samba.org> | 2014-02-18 09:49:35 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2014-02-18 10:28:51 +0100 |
commit | ebf00688987c79798ffa97a2f04ea36c5c08af00 (patch) | |
tree | 36510d03c8de92515096a6c99844daf8aec10733 /source4 | |
parent | 90222dcdfd3de148e1f3da00d40427fee9a38d63 (diff) | |
download | samba-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')
-rw-r--r-- | source4/rpc_server/unixinfo/dcesrv_unixinfo.c | 36 |
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 10eda452d3..821f53c495 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; |