1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-01 04:58:35 +03:00

Directly call backends from idmap_[ugs]_to_[ugs]id

(This used to be commit f955407042e6d2384acccc399d72ff65ba0e721c)
This commit is contained in:
Volker Lendecke 2008-07-14 12:32:18 +02:00
parent 1bdbe772ad
commit 0c1e27abf6
2 changed files with 45 additions and 22 deletions

View File

@ -1282,6 +1282,45 @@ done:
return ret; return ret;
} }
NTSTATUS idmap_backends_unixid_to_sid(struct id_map *id)
{
struct id_map *maps[2];
int i;
maps[0] = id;
maps[1] = NULL;
for (i = num_domains-1; i>=0; i--) {
struct idmap_domain *dom = idmap_domains[i];
NTSTATUS status;
DEBUG(10, ("Query sids from domain %s\n", dom->name));
status = dom->methods->unixids_to_sids(dom, maps);
if (NT_STATUS_IS_OK(status)) {
return NT_STATUS_OK;
}
}
return NT_STATUS_NONE_MAPPED;
}
NTSTATUS idmap_backends_sid_to_unixid(struct id_map *id)
{
struct idmap_domain *dom;
struct id_map *maps[2];
dom = find_idmap_domain_from_sid(id->sid);
if (dom == NULL) {
return NT_STATUS_NONE_MAPPED;
}
maps[0] = id;
maps[1] = NULL;
return dom->methods->sids_to_unixids(dom, maps);
}
/************************************************************************** /**************************************************************************
idmap interface functions idmap interface functions
**************************************************************************/ **************************************************************************/

View File

@ -31,7 +31,6 @@ NTSTATUS idmap_uid_to_sid(DOM_SID *sid, uid_t uid)
{ {
NTSTATUS ret; NTSTATUS ret;
struct id_map map; struct id_map map;
struct id_map *maps[2];
DEBUG(10,("uid = [%lu]\n", (unsigned long)uid)); DEBUG(10,("uid = [%lu]\n", (unsigned long)uid));
@ -39,10 +38,7 @@ NTSTATUS idmap_uid_to_sid(DOM_SID *sid, uid_t uid)
map.xid.type = ID_TYPE_UID; map.xid.type = ID_TYPE_UID;
map.xid.id = uid; map.xid.id = uid;
maps[0] = ↦ ret = idmap_backends_unixid_to_sid(&map);
maps[1] = NULL;
ret = idmap_unixids_to_sids(maps);
if ( ! NT_STATUS_IS_OK(ret)) { if ( ! NT_STATUS_IS_OK(ret)) {
DEBUG(10, ("error mapping uid [%lu]\n", (unsigned long)uid)); DEBUG(10, ("error mapping uid [%lu]\n", (unsigned long)uid));
return ret; return ret;
@ -65,7 +61,6 @@ NTSTATUS idmap_gid_to_sid(DOM_SID *sid, gid_t gid)
{ {
NTSTATUS ret; NTSTATUS ret;
struct id_map map; struct id_map map;
struct id_map *maps[2];
DEBUG(10,("gid = [%lu]\n", (unsigned long)gid)); DEBUG(10,("gid = [%lu]\n", (unsigned long)gid));
@ -73,10 +68,7 @@ NTSTATUS idmap_gid_to_sid(DOM_SID *sid, gid_t gid)
map.xid.type = ID_TYPE_GID; map.xid.type = ID_TYPE_GID;
map.xid.id = gid; map.xid.id = gid;
maps[0] = ↦ ret = idmap_backends_unixid_to_sid(&map);
maps[1] = NULL;
ret = idmap_unixids_to_sids(maps);
if ( ! NT_STATUS_IS_OK(ret)) { if ( ! NT_STATUS_IS_OK(ret)) {
DEBUG(10, ("error mapping gid [%lu]\n", (unsigned long)gid)); DEBUG(10, ("error mapping gid [%lu]\n", (unsigned long)gid));
return ret; return ret;
@ -99,17 +91,13 @@ NTSTATUS idmap_sid_to_uid(DOM_SID *sid, uid_t *uid)
{ {
NTSTATUS ret; NTSTATUS ret;
struct id_map map; struct id_map map;
struct id_map *maps[2];
DEBUG(10,("idmap_sid_to_uid: sid = [%s]\n", sid_string_dbg(sid))); DEBUG(10,("idmap_sid_to_uid: sid = [%s]\n", sid_string_dbg(sid)));
map.sid = sid; map.sid = sid;
map.xid.type = ID_TYPE_UID; map.xid.type = ID_TYPE_UID;
maps[0] = ↦ ret = idmap_backends_sid_to_unixid(&map);
maps[1] = NULL;
ret = idmap_sids_to_unixids(maps);
if ( ! NT_STATUS_IS_OK(ret)) { if ( ! NT_STATUS_IS_OK(ret)) {
DEBUG(10, ("error mapping sid [%s] to uid\n", DEBUG(10, ("error mapping sid [%s] to uid\n",
sid_string_dbg(sid))); sid_string_dbg(sid)));
@ -139,17 +127,13 @@ NTSTATUS idmap_sid_to_gid(DOM_SID *sid, gid_t *gid)
{ {
NTSTATUS ret; NTSTATUS ret;
struct id_map map; struct id_map map;
struct id_map *maps[2];
DEBUG(10,("idmap_sid_to_gid: sid = [%s]\n", sid_string_dbg(sid))); DEBUG(10,("idmap_sid_to_gid: sid = [%s]\n", sid_string_dbg(sid)));
map.sid = sid; map.sid = sid;
map.xid.type = ID_TYPE_GID; map.xid.type = ID_TYPE_GID;
maps[0] = ↦ ret = idmap_backends_sid_to_unixid(&map);
maps[1] = NULL;
ret = idmap_sids_to_unixids(maps);
if ( ! NT_STATUS_IS_OK(ret)) { if ( ! NT_STATUS_IS_OK(ret)) {
DEBUG(10, ("error mapping sid [%s] to gid\n", DEBUG(10, ("error mapping sid [%s] to gid\n",
sid_string_dbg(sid))); sid_string_dbg(sid)));