diff options
Diffstat (limited to 'nslcd')
-rw-r--r-- | nslcd/common.h | 3 | ||||
-rw-r--r-- | nslcd/group.c | 21 | ||||
-rw-r--r-- | nslcd/passwd.c | 19 |
3 files changed, 20 insertions, 23 deletions
diff --git a/nslcd/common.h b/nslcd/common.h index e2490ad..f6a72b9 100644 --- a/nslcd/common.h +++ b/nslcd/common.h @@ -85,7 +85,6 @@ int nslcd_service_all(TFILE *fp,MYLDAP_SESSION *session); int nslcd_shadow_byname(TFILE *fp,MYLDAP_SESSION *session); int nslcd_shadow_all(TFILE *fp,MYLDAP_SESSION *session); -int mkfilter_passwd_byname(const char *name, - char *buffer,size_t buflen); +char *passwd_username2dn(MYLDAP_SESSION *session,const char *username); #endif /* not _SERVER_COMMON_H */ diff --git a/nslcd/group.c b/nslcd/group.c index 910cb6d..9d85917 100644 --- a/nslcd/group.c +++ b/nslcd/group.c @@ -173,25 +173,6 @@ static int mkfilter_getgroupsbydn(const char *dn, attmap_group_uniqueMember,dn); } -static char *user2dn(MYLDAP_SESSION *session,const char *user) -{ - char *userdn=NULL; - static const char *no_attrs[]={ NULL }; - char filter[1024]; - LDAPMessage *res, *e; - mkfilter_passwd_byname(user,filter,sizeof(filter)); - if (_nss_ldap_search_sync(session,group_base,group_scope,filter,no_attrs,1,&res)==NSS_STATUS_SUCCESS) - { - e=_nss_ldap_first_entry(session,res); - if (e!=NULL) - { - userdn=_nss_ldap_get_dn(session,e); - } - ldap_msgfree(res); - } - return userdn; -} - static int mkfilter_group_bymember(MYLDAP_SESSION *session,const char *user, char *buffer,size_t buflen) { @@ -203,7 +184,7 @@ static int mkfilter_group_bymember(MYLDAP_SESSION *session,const char *user, return -1; /* lookup the user's DN */ if (_nss_ldap_test_config_flag(NSS_LDAP_FLAGS_RFC2307BIS)) - userdn=user2dn(session,user); + userdn=passwd_username2dn(session,user); if (userdn==NULL) return mysnprintf(buffer,buflen, "(&%s(%s=%s))", diff --git a/nslcd/passwd.c b/nslcd/passwd.c index 92b59fd..bd0a1fb 100644 --- a/nslcd/passwd.c +++ b/nslcd/passwd.c @@ -87,7 +87,7 @@ static const char *passwd_attrs[10]; /* create a search filter for searching a passwd entry by name, return -1 on errors */ -int mkfilter_passwd_byname(const char *name, +static int mkfilter_passwd_byname(const char *name, char *buffer,size_t buflen) { char buf2[1024]; @@ -241,6 +241,23 @@ static enum nss_status _nss_ldap_parse_pw( return NSS_STATUS_SUCCESS; } +char *passwd_username2dn(MYLDAP_SESSION *session,const char *username) +{ + char *userdn=NULL; + static const char *no_attrs[]={ NULL }; + char filter[1024]; + LDAPMessage *res,*e; + mkfilter_passwd_byname(username,filter,sizeof(filter)); + if (_nss_ldap_search_sync(session,passwd_base,passwd_scope,filter,no_attrs,1,&res)==NSS_STATUS_SUCCESS) + { + e=_nss_ldap_first_entry(session,res); + if (e!=NULL) + userdn=_nss_ldap_get_dn(session,e); + ldap_msgfree(res); + } + return userdn; +} + /* the caller should take care of opening and closing the stream */ int nslcd_passwd_byname(TFILE *fp,MYLDAP_SESSION *session) { |