*************** *** 538,548 **** free(filter); free(base); } else if (!strcmp((char *) mapcache_current->map, "group.byname")) { /* XXX Add preferences for filter and basedn */ base = safe_malloc(strlen(ldaprefs.basedn) + strlen("ou=Group,") + 1); sprintf(base, "%s%s", "ou=Group,", ldaprefs.basedn); filter = safe_strdup("(objectClass=posixGroup)"); if(ldap_search_s(ldaprefs.ldap, --- 605,689 ---- free(filter); free(base); } + else if (!strcmp((char *) mapcache_current->map, "master.passwd.byname")) + { + /* XXX Add preferences for filter and basedn */ + base = safe_malloc(strlen(ldaprefs.basedn) + strlen("ou=Staffs,") + 1); + sprintf(base, "%s%s", "ou=Staffs,", ldaprefs.basedn); + filter = safe_strdup("(objectClass=posixAccount)"); + + if(ldap_search_s(ldaprefs.ldap, + base, + LDAP_SCOPE_ONELEVEL, + filter, + user_attributes, + 0, + &ldapreturn) != -1) + { + for (record = ldap_first_entry(ldaprefs.ldap, ldapreturn); record; record = ldap_next_entry(ldaprefs.ldap, record)) + { + pwinfo = safe_malloc(sizeof(struct pwinfo)); + rval = assemble_master_passwd(val, record, pwinfo); + if(rval == YP_TRUE); + { + if(check_unique(mapcache_current, pwinfo->uid) == YP_NOKEY) + { + mapentry_current = safe_malloc(sizeof(struct mapentry)); + mapentry_current->key = safe_strdup(pwinfo->uid); + mapentry_current->val = val->valdat_val; + mapentry_current->next = mapcache_current->mapentry; + mapcache_current->mapentry = mapentry_current; + } + } + clean_pwinfo(pwinfo); + } + } + ldap_msgfree(ldapreturn); + free(filter); + free(base); + } + else if (!strcmp((char *) mapcache_current->map, "master.passwd.byuid")) + { + /* XXX Add preferences for filter and basedn */ + base = safe_malloc(strlen(ldaprefs.basedn) + strlen("ou=Staffs,") + 1); + sprintf(base, "%s%s", "ou=Staffs,", ldaprefs.basedn); + filter = safe_strdup("(objectClass=posixAccount)"); + + if(ldap_search_s(ldaprefs.ldap, + base, + LDAP_SCOPE_ONELEVEL, + filter, + user_attributes, + 0, + &ldapreturn) != -1) + { + for (record = ldap_first_entry(ldaprefs.ldap, ldapreturn); record; record = ldap_next_entry(ldaprefs.ldap, record)) + { + pwinfo = safe_malloc(sizeof(struct pwinfo)); + rval = assemble_master_passwd(val, record, pwinfo); + if(rval == YP_TRUE); + { + if(check_unique(mapcache_current, pwinfo->uidnumber) == YP_NOKEY) + { + mapentry_current = safe_malloc(sizeof(struct mapentry)); + mapentry_current->key = safe_strdup(pwinfo->uidnumber); + mapentry_current->val = val->valdat_val; + mapentry_current->next = mapcache_current->mapentry; + mapcache_current->mapentry = mapentry_current; + } + } + clean_pwinfo(pwinfo); + } + } + ldap_msgfree(ldapreturn); + free(filter); + free(base); + } else if (!strcmp((char *) mapcache_current->map, "group.byname")) { /* XXX Add preferences for filter and basedn */ base = safe_malloc(strlen(ldaprefs.basedn) + strlen("ou=Group,") + 1); sprintf(base, "%s%s", "ou=Group,", ldaprefs.basedn); filter = safe_strdup("(objectClass=posixGroup)"); if(ldap_search_s(ldaprefs.ldap,