From 9017764a71c156c71a9593a43eaf7ebffdbd7fe4 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 18 Feb 2014 09:50:30 +0100 Subject: [PATCH] Revert "libwbclient4: Add wbc_xids_to_sids" This reverts commit f275ce4e4367478b488810491c7bcd993c37caf1. Signed-off-by: Volker Lendecke Reviewed-by: Andreas Schneider --- source4/libcli/wbclient/wbclient.c | 215 ----------------------------- 1 file changed, 215 deletions(-) diff --git a/source4/libcli/wbclient/wbclient.c b/source4/libcli/wbclient/wbclient.c index 8cfe117d0b1..5b95be12593 100644 --- a/source4/libcli/wbclient/wbclient.c +++ b/source4/libcli/wbclient/wbclient.c @@ -21,7 +21,6 @@ #include "includes.h" #include -#include "lib/util/tevent_unix.h" #include "libcli/wbclient/wbclient.h" #include "nsswitch/wb_reqtrans.h" #include "system/network.h" @@ -362,217 +361,3 @@ NTSTATUS wbc_sids_to_xids(struct tevent_context *ev, struct id_map *ids, return NT_STATUS_OK; } - -struct wbc_id_to_sid_state { - struct winbindd_request wbreq; - struct dom_sid sid; -}; - -static void wbc_id_to_sid_done(struct tevent_req *subreq); - -static struct tevent_req *wbc_id_to_sid_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - int fd, const struct unixid *id) -{ - struct tevent_req *req, *subreq; - struct wbc_id_to_sid_state *state; - - req = tevent_req_create(mem_ctx, &state, struct wbc_id_to_sid_state); - if (req == NULL) { - return NULL; - } - - switch(id->type) { - case ID_TYPE_UID: - state->wbreq.cmd = WINBINDD_UID_TO_SID; - state->wbreq.data.uid = id->id; - break; - case ID_TYPE_GID: - state->wbreq.cmd = WINBINDD_GID_TO_SID; - state->wbreq.data.gid = id->id; - break; - default: - tevent_req_error(req, ENOENT); - return tevent_req_post(req, ev); - } - - subreq = wb_simple_trans_send(state, ev, NULL, fd, &state->wbreq); - if (tevent_req_nomem(subreq, req)) { - return tevent_req_post(req, ev); - } - tevent_req_set_callback(subreq, wbc_id_to_sid_done, req); - return req; -} - -static void wbc_id_to_sid_done(struct tevent_req *subreq) -{ - struct tevent_req *req = tevent_req_callback_data( - subreq, struct tevent_req); - struct wbc_id_to_sid_state *state = tevent_req_data( - req, struct wbc_id_to_sid_state); - struct winbindd_response *wbresp; - int ret, err; - - ret = wb_simple_trans_recv(subreq, state, &wbresp, &err); - TALLOC_FREE(subreq); - if (ret == -1) { - tevent_req_error(req, err); - return; - } - if ((wbresp->result != WINBINDD_OK) || - !dom_sid_parse(wbresp->data.sid.sid, &state->sid)) { - tevent_req_error(req, ENOENT); - return; - } - tevent_req_done(req); -} - -static int wbc_id_to_sid_recv(struct tevent_req *req, struct dom_sid *sid) -{ - struct wbc_id_to_sid_state *state = tevent_req_data( - req, struct wbc_id_to_sid_state); - int err; - - if (tevent_req_is_unix_error(req, &err)) { - return err; - } - sid_copy(sid, &state->sid); - return 0; -} - -struct wbc_ids_to_sids_state { - struct tevent_context *ev; - int fd; - struct id_map *ids; - uint32_t count; - uint32_t idx; -}; - -static void wbc_ids_to_sids_done(struct tevent_req *subreq); - -static struct tevent_req *wbc_ids_to_sids_send( - TALLOC_CTX *mem_ctx, struct tevent_context *ev, - int fd, struct id_map *ids, uint32_t count) -{ - struct tevent_req *req, *subreq; - struct wbc_ids_to_sids_state *state; - - req = tevent_req_create(mem_ctx, &state, - struct wbc_ids_to_sids_state); - if (req == NULL) { - return NULL; - } - state->ev = ev; - state->fd = fd; - state->ids = ids; - state->count = count; - - if (count == 0) { - tevent_req_done(req); - return tevent_req_post(req, ev); - } - - subreq = wbc_id_to_sid_send(state, state->ev, state->fd, - &state->ids[state->idx].xid); - if (tevent_req_nomem(subreq, req)) { - return tevent_req_post(req, ev); - } - tevent_req_set_callback(subreq, wbc_ids_to_sids_done, req); - return req; -} - -static void wbc_ids_to_sids_done(struct tevent_req *subreq) -{ - struct tevent_req *req = tevent_req_callback_data( - subreq, struct tevent_req); - struct wbc_ids_to_sids_state *state = tevent_req_data( - req, struct wbc_ids_to_sids_state); - struct id_map *id; - struct dom_sid sid; - int ret; - - ret = wbc_id_to_sid_recv(subreq, &sid); - TALLOC_FREE(subreq); - - id = &state->ids[state->idx]; - if (ret == 0) { - id->status = ID_MAPPED; - id->sid = dom_sid_dup(state->ids, &sid); - if (id->sid == NULL) { - tevent_req_error(req, ENOMEM); - return; - } - } else { - id->status = ID_UNMAPPED; - id->sid = NULL; - } - - state->idx += 1; - if (state->idx == state->count) { - tevent_req_done(req); - return; - } - - subreq = wbc_id_to_sid_send(state, state->ev, state->fd, - &state->ids[state->idx].xid); - if (tevent_req_nomem(subreq, req)) { - return; - } - tevent_req_set_callback(subreq, wbc_ids_to_sids_done, req); -} - -static int wbc_ids_to_sids_recv(struct tevent_req *req) -{ - int err; - if (tevent_req_is_unix_error(req, &err)) { - return err; - } - return 0; -} - -NTSTATUS wbc_xids_to_sids(struct tevent_context *ev, struct id_map *ids, - uint32_t count) -{ - struct tevent_req *req; - NTSTATUS status; - bool polled; - int ret, fd; - - DEBUG(5, ("wbc_xids_to_sids called: %u ids\n", (unsigned)count)); - - fd = winbindd_pipe_sock(); - if (fd == -1) { - status = map_nt_error_from_unix_common(errno); - DEBUG(10, ("winbindd_pipe_sock returned %s\n", - strerror(errno))); - return status; - } - - req = wbc_ids_to_sids_send(ev, ev, fd, ids, count); - if (req == NULL) { - status = NT_STATUS_NO_MEMORY; - goto done; - } - - polled = tevent_req_poll(req, ev); - if (!polled) { - status = map_nt_error_from_unix_common(errno); - DEBUG(10, ("tevent_req_poll returned %s\n", - strerror(errno))); - goto done; - } - - ret = wbc_ids_to_sids_recv(req); - TALLOC_FREE(req); - if (ret != 0) { - status = map_nt_error_from_unix_common(ret); - DEBUG(10, ("tevent_req_poll returned %s\n", - strerror(ret))); - } else { - status = NT_STATUS_OK; - } - -done: - close(fd); - return status; -} -- 2.34.1