Don't set a mapping that is already there.
authorVolker Lendecke <vlendec@samba.org>
Tue, 1 Jul 2003 10:01:57 +0000 (10:01 +0000)
committerVolker Lendecke <vlendec@samba.org>
Tue, 1 Jul 2003 10:01:57 +0000 (10:01 +0000)
Volker
(This used to be commit 9d317fb533c5236bef1701d322abd537beea02d5)

source3/sam/idmap.c

index 29fcb890678b0f083a3718f3c4fb207ab51b519b..a8c47ab9ae5e9aa52d5d62a31b40fce90c6c6474 100644 (file)
@@ -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