diff options
Diffstat (limited to 'nslcd/passwd.c')
-rw-r--r-- | nslcd/passwd.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/nslcd/passwd.c b/nslcd/passwd.c index 2b80de3..068ba9c 100644 --- a/nslcd/passwd.c +++ b/nslcd/passwd.c @@ -246,13 +246,11 @@ char *dn2uid(MYLDAP_SESSION *session,const char *dn,char *buf,size_t buflen) return buf; } -char *uid2dn(MYLDAP_SESSION *session,const char *uid,char *buf,size_t buflen) +MYLDAP_ENTRY *uid2entry(MYLDAP_SESSION *session,const char *uid) { MYLDAP_SEARCH *search; - MYLDAP_ENTRY *entry; static const char *attrs[1]; int rc; - const char *dn; char filter[1024]; /* if it isn't a valid username, just bail out now */ if (!isvalidname(uid)) @@ -266,23 +264,18 @@ char *uid2dn(MYLDAP_SESSION *session,const char *uid,char *buf,size_t buflen) search=myldap_search(session,passwd_base,passwd_scope,filter,attrs); if (search==NULL) return NULL; - entry=myldap_get_entry(search,&rc); + return myldap_get_entry(search,&rc); +} + +char *uid2dn(MYLDAP_SESSION *session,const char *uid,char *buf,size_t buflen) +{ + MYLDAP_ENTRY *entry; + /* look up the entry */ + entry=uid2entry(session,uid); if (entry==NULL) return NULL; /* get DN */ - dn=myldap_get_dn(entry); - if (strcasecmp(dn,"unknown")==0) - { - myldap_search_close(search); - return NULL; - } - /* copy into buffer */ - if (strlen(dn)<buflen) - strcpy(buf,dn); - else - buf=NULL; - myldap_search_close(search); - return buf; + return myldap_cpy_dn(entry,buf,buflen); } /* the maximum number of uidNumber attributes per entry */ |