summaryrefslogtreecommitdiff
path: root/nslcd/group.c
diff options
context:
space:
mode:
Diffstat (limited to 'nslcd/group.c')
-rw-r--r--nslcd/group.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/nslcd/group.c b/nslcd/group.c
index baf367e..fa50d6f 100644
--- a/nslcd/group.c
+++ b/nslcd/group.c
@@ -61,7 +61,7 @@ const char *group_filter = "(objectClass=posixGroup)";
/* the attributes to request with searches */
const char *attmap_group_cn = "cn";
-const char *attmap_group_userPassword = "userPassword";
+const char *attmap_group_userPassword = "\"*\"";
const char *attmap_group_gidNumber = "gidNumber";
const char *attmap_group_memberUid = "memberUid";
const char *attmap_group_uniqueMember = "uniqueMember";
@@ -69,9 +69,8 @@ const char *attmap_group_uniqueMember = "uniqueMember";
/* default values for attributes */
static const char *default_group_userPassword = "*"; /* unmatchable */
-
/* the attribute list to request with searches */
-static const char *group_attrs[6];
+static const char **group_attrs=NULL;
/* create a search filter for searching a group entry
by name, return -1 on errors */
@@ -132,6 +131,7 @@ static int mkfilter_group_bymember(MYLDAP_SESSION *session,
void group_init(void)
{
int i;
+ SET *set;
/* set up search bases */
if (group_bases[0]==NULL)
for (i=0;i<NSS_LDAP_CONFIG_MAX_BASES;i++)
@@ -140,12 +140,14 @@ void group_init(void)
if (group_scope==LDAP_SCOPE_DEFAULT)
group_scope=nslcd_cfg->ldc_scope;
/* set up attribute list */
- group_attrs[0]=attmap_group_cn;
- group_attrs[1]=attmap_group_userPassword;
- group_attrs[2]=attmap_group_memberUid;
- group_attrs[3]=attmap_group_gidNumber;
- group_attrs[4]=attmap_group_uniqueMember;
- group_attrs[5]=NULL;
+ set=set_new();
+ attmap_add_attributes(set,attmap_group_cn);
+ attmap_add_attributes(set,attmap_group_userPassword);
+ attmap_add_attributes(set,attmap_group_memberUid);
+ attmap_add_attributes(set,attmap_group_gidNumber);
+ attmap_add_attributes(set,attmap_group_uniqueMember);
+ group_attrs=set_tolist(set);
+ set_free(set);
}
static int do_write_group(
@@ -224,6 +226,7 @@ static int write_group(TFILE *fp,MYLDAP_ENTRY *entry,const char *reqname,
gid_t gids[MAXGIDS_PER_ENTRY];
int numgids;
char *tmp;
+ char passbuffer[80];
int rc;
/* get group name (cn) */
names=myldap_get_values(entry,attmap_group_cn);
@@ -260,7 +263,7 @@ static int write_group(TFILE *fp,MYLDAP_ENTRY *entry,const char *reqname,
}
}
/* get group passwd (userPassword) (use only first entry) */
- passwd=get_userpassword(entry,attmap_group_userPassword);
+ passwd=get_userpassword(entry,attmap_group_userPassword,passbuffer,sizeof(passbuffer));
if (passwd==NULL)
passwd=default_group_userPassword;
/* get group memebers (memberUid&uniqueMember) */