diff options
author | Volker Lendecke <vlendec@samba.org> | 2003-07-01 10:01:57 +0000 |
---|---|---|
committer | Volker Lendecke <vlendec@samba.org> | 2003-07-01 10:01:57 +0000 |
commit | 9d317fb533c5236bef1701d322abd537beea02d5 (patch) | |
tree | 82fe97e4553f4b117433ebb961995bc4d4292111 /source/sam | |
parent | 6babc35ef9c62a48a56ef63945d09e7e06229666 (diff) | |
download | samba-9d317fb533c5236bef1701d322abd537beea02d5.tar.gz samba-9d317fb533c5236bef1701d322abd537beea02d5.tar.xz samba-9d317fb533c5236bef1701d322abd537beea02d5.zip |
Don't set a mapping that is already there.
Volker
Diffstat (limited to 'source/sam')
-rw-r--r-- | source/sam/idmap.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/source/sam/idmap.c b/source/sam/idmap.c index 29fcb890678..a8c47ab9ae5 100644 --- a/source/sam/idmap.c +++ b/source/sam/idmap.c @@ -151,6 +151,21 @@ BOOL idmap_init(const char *remote_backend) NTSTATUS idmap_set_mapping(const DOM_SID *sid, unid_t id, int id_type) { struct idmap_methods *map = remote_map; + DOM_SID tmp_sid; + + DEBUG(10, ("idmap_set_mapping: Set %s to %s %d\n", + sid_string_static(sid), + ((id_type & ID_TYPEMASK) == ID_USERID) ? "UID" : "GID", + ((id_type & ID_TYPEMASK) == ID_USERID) ? id.uid : id.gid)); + + if ( (NT_STATUS_IS_OK(cache_map-> + get_sid_from_id(&tmp_sid, id, + id_type | ID_QUERY_ONLY))) && + sid_equal(sid, &tmp_sid) ) { + /* Nothing to do, we already have that mapping */ + DEBUG(10, ("idmap_set_mapping: Mapping already there\n")); + return NT_STATUS_OK; + } if (map == NULL) { /* Ok, we don't have a authoritative remote |