Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/nslcd/group.c
diff options
context:
space:
mode:
Diffstat (limited to 'nslcd/group.c')
-rw-r--r--nslcd/group.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/nslcd/group.c b/nslcd/group.c
index 6bb7e8c..1926a33 100644
--- a/nslcd/group.c
+++ b/nslcd/group.c
@@ -145,7 +145,7 @@ void group_init(void)
static int do_write_group(
TFILE *fp,MYLDAP_ENTRY *entry,const char **names,gid_t gids[],int numgids,
- const char *passwd,SET *members)
+ const char *passwd,SET *members,const char *reqname)
{
int32_t tmpint32;
int i,j;
@@ -167,7 +167,7 @@ static int do_write_group(
log_log(LOG_WARNING,"group entry %s contains invalid group name: \"%s\"",
myldap_get_dn(entry),names[i]);
}
- else
+ else if ((reqname==NULL)||(strcmp(reqname,names[i])==0))
{
for (j=0;j<numgids;j++)
{
@@ -229,7 +229,6 @@ static int write_group(TFILE *fp,MYLDAP_ENTRY *entry,const char *reqname,
const gid_t *reqgid,int wantmembers,
MYLDAP_SESSION *session)
{
- const char *tmparr[2];
const char **names,**gidvalues;
const char *passwd;
SET *members;
@@ -238,21 +237,12 @@ static int write_group(TFILE *fp,MYLDAP_ENTRY *entry,const char *reqname,
char *tmp;
int rc;
/* get group name (cn) */
- if (reqname!=NULL)
+ names=myldap_get_values(entry,attmap_group_cn);
+ if ((names==NULL)||(names[0]==NULL))
{
- names=tmparr;
- names[0]=reqname;
- names[1]=NULL;
- }
- else
- {
- names=myldap_get_values(entry,attmap_group_cn);
- if ((names==NULL)||(names[0]==NULL))
- {
- log_log(LOG_WARNING,"group entry %s does not contain %s value",
- myldap_get_dn(entry),attmap_group_cn);
- return 0;
- }
+ log_log(LOG_WARNING,"group entry %s does not contain %s value",
+ myldap_get_dn(entry),attmap_group_cn);
+ return 0;
}
/* get the group id(s) */
if (reqgid!=NULL)
@@ -291,7 +281,7 @@ static int write_group(TFILE *fp,MYLDAP_ENTRY *entry,const char *reqname,
members=NULL;
/* write entries (split to a separate function so we can ensure the call
to free() below in case a write fails) */
- rc=do_write_group(fp,entry,names,gids,numgids,passwd,members);
+ rc=do_write_group(fp,entry,names,gids,numgids,passwd,members,reqname);
/* free and return */
if (members!=NULL)
set_free(members);