diff options
-rw-r--r-- | source3/Makefile.in | 2 | ||||
-rw-r--r-- | source3/winbindd/wb_sid2gid.c | 167 | ||||
-rw-r--r-- | source3/winbindd/wb_sid2uid.c | 165 | ||||
-rw-r--r-- | source3/winbindd/winbindd_proto.h | 10 | ||||
-rwxr-xr-x | source3/wscript_build | 2 |
5 files changed, 0 insertions, 346 deletions
diff --git a/source3/Makefile.in b/source3/Makefile.in index bb0861fb38..3818990902 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1396,8 +1396,6 @@ WINBINDD_OBJ1 = \ winbindd/wb_lookupsid.o \ winbindd/wb_lookupsids.o \ winbindd/wb_lookupname.o \ - winbindd/wb_sid2uid.o \ - winbindd/wb_sid2gid.o \ winbindd/wb_uid2sid.o \ winbindd/wb_gid2sid.o \ winbindd/wb_sids2xids.o \ diff --git a/source3/winbindd/wb_sid2gid.c b/source3/winbindd/wb_sid2gid.c deleted file mode 100644 index cb95191e7e..0000000000 --- a/source3/winbindd/wb_sid2gid.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - Unix SMB/CIFS implementation. - async sid2gid - Copyright (C) Volker Lendecke 2009 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "includes.h" -#include "winbindd.h" -#include "librpc/gen_ndr/ndr_wbint_c.h" -#include "idmap_cache.h" -#include "../libcli/security/security.h" - -struct wb_sid2gid_state { - struct tevent_context *ev; - struct dom_sid sid; - char *dom_name; - uint64 gid64; - gid_t gid; -}; - -static void wb_sid2gid_lookup_done(struct tevent_req *subreq); -static void wb_sid2gid_done(struct tevent_req *subreq); - - -struct tevent_req *wb_sid2gid_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - const struct dom_sid *sid) -{ - struct tevent_req *req, *subreq; - struct wb_sid2gid_state *state; - bool expired; - - req = tevent_req_create(mem_ctx, &state, struct wb_sid2gid_state); - if (req == NULL) { - return NULL; - } - sid_copy(&state->sid, sid); - state->ev = ev; - - if (winbindd_use_idmap_cache() - && idmap_cache_find_sid2gid(sid, &state->gid, &expired)) { - - DEBUG(10, ("idmap_cache_find_sid2gid found %d%s\n", - (int)state->gid, expired ? " (expired)": "")); - - if (!expired || is_domain_offline(find_our_domain())) { - if (state->gid == -1) { - tevent_req_nterror(req, NT_STATUS_NONE_MAPPED); - } else { - tevent_req_done(req); - } - return tevent_req_post(req, ev); - } - } - - /* - * We need to make sure the sid is of the right type to not flood - * idmap with wrong entries - */ - - subreq = wb_lookupsid_send(state, ev, &state->sid); - if (tevent_req_nomem(subreq, req)) { - return tevent_req_post(req, ev); - } - tevent_req_set_callback(subreq, wb_sid2gid_lookup_done, req); - return req; -} - -static void wb_sid2gid_lookup_done(struct tevent_req *subreq) -{ - struct tevent_req *req = tevent_req_callback_data( - subreq, struct tevent_req); - struct wb_sid2gid_state *state = tevent_req_data( - req, struct wb_sid2gid_state); - struct winbindd_domain *domain; - const char *domname; - const char *name; - enum lsa_SidType type; - NTSTATUS status; - struct winbindd_child *child; - - status = wb_lookupsid_recv(subreq, talloc_tos(), &type, &domname, - &name); - if (tevent_req_nterror(req, status)) { - return; - } - - if ((type != SID_NAME_DOM_GRP) && (type != SID_NAME_ALIAS) - && (type != SID_NAME_WKN_GRP)) { - DEBUG(5, ("Sid %s is not a group.\n", - sid_string_dbg(&state->sid))); - /* - * We have to set the cache ourselves here, the child - * which is normally responsible was not queried yet. - */ - idmap_cache_set_sid2gid(&state->sid, -1); - tevent_req_nterror(req, NT_STATUS_INVALID_SID); - return; - } - - domain = find_domain_from_sid_noinit(&state->sid); - - /* - * TODO: Issue a gettrustinfo here in case we don't have "domain" yet? - */ - - if ((domain != NULL) && domain->have_idmap_config) { - state->dom_name = domain->name; - } else { - state->dom_name = NULL; - } - - child = idmap_child(); - - subreq = dcerpc_wbint_Sid2Gid_send(state, state->ev, child->binding_handle, - state->dom_name, &state->sid, - &state->gid64); - if (tevent_req_nomem(subreq, req)) { - return; - } - tevent_req_set_callback(subreq, wb_sid2gid_done, req); -} - -static void wb_sid2gid_done(struct tevent_req *subreq) -{ - struct tevent_req *req = tevent_req_callback_data( - subreq, struct tevent_req); - struct wb_sid2gid_state *state = tevent_req_data( - req, struct wb_sid2gid_state); - NTSTATUS status, result; - - status = dcerpc_wbint_Sid2Gid_recv(subreq, state, &result); - TALLOC_FREE(subreq); - if (any_nt_status_not_ok(status, result, &status)) { - tevent_req_nterror(req, status); - return; - } - - state->gid = state->gid64; - tevent_req_done(req); -} - -NTSTATUS wb_sid2gid_recv(struct tevent_req *req, gid_t *gid) -{ - struct wb_sid2gid_state *state = tevent_req_data( - req, struct wb_sid2gid_state); - NTSTATUS status; - - if (tevent_req_is_nterror(req, &status)) { - return status; - } - *gid = state->gid; - return NT_STATUS_OK; -} diff --git a/source3/winbindd/wb_sid2uid.c b/source3/winbindd/wb_sid2uid.c deleted file mode 100644 index a2e0f9712f..0000000000 --- a/source3/winbindd/wb_sid2uid.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - Unix SMB/CIFS implementation. - async sid2uid - Copyright (C) Volker Lendecke 2009 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "includes.h" -#include "winbindd.h" -#include "librpc/gen_ndr/ndr_wbint_c.h" -#include "idmap_cache.h" -#include "../libcli/security/security.h" - -struct wb_sid2uid_state { - struct tevent_context *ev; - struct dom_sid sid; - char *dom_name; - uint64 uid64; - uid_t uid; -}; - -static void wb_sid2uid_lookup_done(struct tevent_req *subreq); -static void wb_sid2uid_done(struct tevent_req *subreq); - -struct tevent_req *wb_sid2uid_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - const struct dom_sid *sid) -{ - struct tevent_req *req, *subreq; - struct wb_sid2uid_state *state; - bool expired; - - req = tevent_req_create(mem_ctx, &state, struct wb_sid2uid_state); - if (req == NULL) { - return NULL; - } - sid_copy(&state->sid, sid); - state->ev = ev; - - if (winbindd_use_idmap_cache() - && idmap_cache_find_sid2uid(sid, &state->uid, &expired)) { - - DEBUG(10, ("idmap_cache_find_sid2uid found %d%s\n", - (int)state->uid, expired ? " (expired)": "")); - - if (!expired || is_domain_offline(find_our_domain())) { - if (state->uid == -1) { - tevent_req_nterror(req, NT_STATUS_NONE_MAPPED); - } else { - tevent_req_done(req); - } - return tevent_req_post(req, ev); - } - } - - /* - * We need to make sure the sid is of the right type to not flood - * idmap with wrong entries - */ - - subreq = wb_lookupsid_send(state, ev, &state->sid); - if (tevent_req_nomem(subreq, req)) { - return tevent_req_post(req, ev); - } - tevent_req_set_callback(subreq, wb_sid2uid_lookup_done, req); - return req; -} - -static void wb_sid2uid_lookup_done(struct tevent_req *subreq) -{ - struct tevent_req *req = tevent_req_callback_data( - subreq, struct tevent_req); - struct wb_sid2uid_state *state = tevent_req_data( - req, struct wb_sid2uid_state); - struct winbindd_domain *domain; - const char *domname; - const char *name; - enum lsa_SidType type; - NTSTATUS status; - struct winbindd_child *child; - - status = wb_lookupsid_recv(subreq, talloc_tos(), &type, &domname, - &name); - if (tevent_req_nterror(req, status)) { - return; - } - - if ((type != SID_NAME_USER) && (type != SID_NAME_COMPUTER)) { - DEBUG(5, ("Sid %s is not a user or a computer.\n", - sid_string_dbg(&state->sid))); - /* - * We have to set the cache ourselves here, the child - * which is normally responsible was not queried yet. - */ - idmap_cache_set_sid2uid(&state->sid, -1); - tevent_req_nterror(req, NT_STATUS_INVALID_SID); - return; - } - - domain = find_domain_from_sid_noinit(&state->sid); - - /* - * TODO: Issue a gettrustinfo here in case we don't have "domain" yet? - */ - - if ((domain != NULL) && domain->have_idmap_config) { - state->dom_name = domain->name; - } else { - state->dom_name = NULL; - } - - child = idmap_child(); - - subreq = dcerpc_wbint_Sid2Uid_send(state, state->ev, child->binding_handle, - state->dom_name, &state->sid, - &state->uid64); - if (tevent_req_nomem(subreq, req)) { - return; - } - tevent_req_set_callback(subreq, wb_sid2uid_done, req); -} - -static void wb_sid2uid_done(struct tevent_req *subreq) -{ - struct tevent_req *req = tevent_req_callback_data( - subreq, struct tevent_req); - struct wb_sid2uid_state *state = tevent_req_data( - req, struct wb_sid2uid_state); - NTSTATUS status, result; - - status = dcerpc_wbint_Sid2Uid_recv(subreq, state, &result); - TALLOC_FREE(subreq); - if (any_nt_status_not_ok(status, result, &status)) { - tevent_req_nterror(req, status); - return; - } - - state->uid = state->uid64; - tevent_req_done(req); -} - -NTSTATUS wb_sid2uid_recv(struct tevent_req *req, uid_t *uid) -{ - struct wb_sid2uid_state *state = tevent_req_data( - req, struct wb_sid2uid_state); - NTSTATUS status; - - if (tevent_req_is_nterror(req, &status)) { - return status; - } - *uid = state->uid; - return NT_STATUS_OK; -} diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 7fe0fed5b6..44693d71dc 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -495,11 +495,6 @@ struct tevent_req *winbindd_lookupname_send(TALLOC_CTX *mem_ctx, NTSTATUS winbindd_lookupname_recv(struct tevent_req *req, struct winbindd_response *response); -struct tevent_req *wb_sid2uid_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - const struct dom_sid *sid); -NTSTATUS wb_sid2uid_recv(struct tevent_req *req, uid_t *uid); - struct tevent_req *winbindd_sid_to_uid_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct winbindd_cli_state *cli, @@ -507,11 +502,6 @@ struct tevent_req *winbindd_sid_to_uid_send(TALLOC_CTX *mem_ctx, NTSTATUS winbindd_sid_to_uid_recv(struct tevent_req *req, struct winbindd_response *response); -struct tevent_req *wb_sid2gid_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - const struct dom_sid *sid); -NTSTATUS wb_sid2gid_recv(struct tevent_req *req, gid_t *gid); - struct tevent_req *winbindd_sid_to_gid_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct winbindd_cli_state *cli, diff --git a/source3/wscript_build b/source3/wscript_build index 039b6b795e..aac18c7cba 100755 --- a/source3/wscript_build +++ b/source3/wscript_build @@ -265,8 +265,6 @@ WINBINDD_SRC1 = '''winbindd/winbindd.c winbindd/wb_lookupsid.c winbindd/wb_lookupsids.c winbindd/wb_lookupname.c - winbindd/wb_sid2uid.c - winbindd/wb_sid2gid.c winbindd/wb_uid2sid.c winbindd/wb_gid2sid.c winbindd/wb_sids2xids.c |