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:
parent
1bdbe772ad
commit
0c1e27abf6
@ -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
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
@ -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)));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user