summaryrefslogtreecommitdiff
path: root/source4/winbind/idmap.c
diff options
context:
space:
mode:
authorKai Blin <kai@samba.org>2009-04-23 16:37:11 +0200
committerKai Blin <kai@samba.org>2010-02-11 23:56:35 +0100
commitea055e8c7905ec5d229fd5b50ca9ec8f60073b53 (patch)
tree1fbb879a3bb2ff7b273c512dbec6e4b86b694521 /source4/winbind/idmap.c
parent86d70ae94425c34fcb7cc7791a6e54b1a47f21cc (diff)
downloadsamba-ea055e8c7905ec5d229fd5b50ca9ec8f60073b53.tar.gz
samba-ea055e8c7905ec5d229fd5b50ca9ec8f60073b53.tar.bz2
samba-ea055e8c7905ec5d229fd5b50ca9ec8f60073b53.zip
s4: Switch to S3-style id mapping data types.
Diffstat (limited to 'source4/winbind/idmap.c')
-rw-r--r--source4/winbind/idmap.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/source4/winbind/idmap.c b/source4/winbind/idmap.c
index b37de8810b..fc7b8d447d 100644
--- a/source4/winbind/idmap.c
+++ b/source4/winbind/idmap.c
@@ -638,22 +638,26 @@ failed:
NTSTATUS idmap_xids_to_sids(struct idmap_context *idmap_ctx,
TALLOC_CTX *mem_ctx, int count,
- struct id_mapping *id)
+ struct id_map *id)
{
int i;
int error_count = 0;
+ NTSTATUS status;
for (i = 0; i < count; ++i) {
- id[i].status = idmap_xid_to_sid(idmap_ctx, mem_ctx,
+ status = idmap_xid_to_sid(idmap_ctx, mem_ctx,
id[i].unixid, &id[i].sid);
- if (NT_STATUS_EQUAL(id[i].status, NT_STATUS_RETRY)) {
- id[i].status = idmap_xid_to_sid(idmap_ctx, mem_ctx,
+ if (NT_STATUS_EQUAL(status, NT_STATUS_RETRY)) {
+ status = idmap_xid_to_sid(idmap_ctx, mem_ctx,
id[i].unixid,
&id[i].sid);
}
- if (!NT_STATUS_IS_OK(id[i].status)) {
+ if (!NT_STATUS_IS_OK(status)) {
DEBUG(1, ("idmapping xid_to_sid failed for id[%d]\n", i));
error_count++;
+ id[i].status = ID_UNMAPPED;
+ } else {
+ id[i].status = ID_MAPPED;
}
}
@@ -683,22 +687,26 @@ NTSTATUS idmap_xids_to_sids(struct idmap_context *idmap_ctx,
NTSTATUS idmap_sids_to_xids(struct idmap_context *idmap_ctx,
TALLOC_CTX *mem_ctx, int count,
- struct id_mapping *id)
+ struct id_map *id)
{
int i;
int error_count = 0;
+ NTSTATUS status;
for (i = 0; i < count; ++i) {
- id[i].status = idmap_sid_to_xid(idmap_ctx, mem_ctx,
+ status = idmap_sid_to_xid(idmap_ctx, mem_ctx,
id[i].sid, &id[i].unixid);
- if (NT_STATUS_EQUAL(id[i].status, NT_STATUS_RETRY)) {
- id[i].status = idmap_sid_to_xid(idmap_ctx, mem_ctx,
+ if (NT_STATUS_EQUAL(status, NT_STATUS_RETRY)) {
+ status = idmap_sid_to_xid(idmap_ctx, mem_ctx,
id[i].sid,
&id[i].unixid);
}
- if (!NT_STATUS_IS_OK(id[i].status)) {
+ if (!NT_STATUS_IS_OK(status)) {
DEBUG(1, ("idmapping sid_to_xid failed for id[%d]\n", i));
error_count++;
+ id[i].status = ID_UNMAPPED;
+ } else {
+ id[i].status = ID_MAPPED;
}
}