summaryrefslogtreecommitdiff
path: root/source3/passdb/pdb_ldap.c
diff options
context:
space:
mode:
authorJean-François Micouleau <jfm@samba.org>2001-12-02 00:03:35 +0000
committerJean-François Micouleau <jfm@samba.org>2001-12-02 00:03:35 +0000
commit83304678a06dab22d87086d0b41e245422be7ae8 (patch)
tree468138501fea016bf7233c6645c2b4938ece1f1f /source3/passdb/pdb_ldap.c
parentd383b618b4b2a1007568e961627c5a9bf5a38594 (diff)
downloadsamba-83304678a06dab22d87086d0b41e245422be7ae8.tar.gz
samba-83304678a06dab22d87086d0b41e245422be7ae8.tar.bz2
samba-83304678a06dab22d87086d0b41e245422be7ae8.zip
added mapping of primary gid to rid thru the group mapping code.
and cleanup and comments in passdb/passdb.c J.F. (This used to be commit 6533339887832ca6dd42d99385c615db7bee3d43)
Diffstat (limited to 'source3/passdb/pdb_ldap.c')
-rw-r--r--source3/passdb/pdb_ldap.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c
index 62c3a1b4a2..d0eebbed89 100644
--- a/source3/passdb/pdb_ldap.c
+++ b/source3/passdb/pdb_ldap.c
@@ -577,13 +577,22 @@ static BOOL init_ldap_from_sam (LDAPMod *** mods, int ldap_state, const SAM_ACCO
make_a_mod(mods, ldap_state, "description", pdb_get_acct_desc(sampass));
make_a_mod(mods, ldap_state, "userWorkstations", pdb_get_workstations(sampass));
- if ( !sampass->user_rid)
+ if ( !sampass->user_rid)
sampass->user_rid = pdb_uid_to_user_rid(pdb_get_uid(sampass));
slprintf(temp, sizeof(temp) - 1, "%i", sampass->user_rid);
make_a_mod(mods, ldap_state, "rid", temp);
- if ( !sampass->group_rid)
- sampass->group_rid = pdb_gid_to_group_rid(pdb_get_gid(sampass));
+ if ( !sampass->group_rid) {
+ GROUP_MAP map;
+
+ if (get_group_map_from_gid(pdb_get_gid(sampass), &map)) {
+ free_privilege(&map.priv_set);
+ sid_peek_rid(&map.sid, &sampass->group_rid);
+ }
+ else
+ sampass->group_rid = pdb_gid_to_group_rid(pdb_get_gid(sampass));
+ }
+
slprintf(temp, sizeof(temp) - 1, "%i", sampass->group_rid);
make_a_mod(mods, ldap_state, "primaryGroupID", temp);