- nip = nss_group_nonlocal_database();
- if (nip == NULL)
- return NSS_STATUS_UNAVAIL;
- if (fct_start == NULL)
- fct_start = __nss_lookup_function(nip, fct_name);
- fct.ptr = fct_start;
+ status = get_local_group(MAGIC_LOCAL_GROUPNAME,
+ &local_users_group, &buffer, errnop);
+ if (status == NSS_STATUS_SUCCESS) {
+ free(buffer);
+ if (!add_group(local_users_group.gr_gid, start, size, groupsp,
+ limit, errnop, &status))
+ return status;
+ } else if (status == NSS_STATUS_TRYAGAIN) {
+ return status;
+ } else {
+ syslog(LOG_WARNING,
+ "nss_nonlocal: Group %s does not exist locally!",
+ MAGIC_LOCAL_GROUPNAME);
+ }
+ } else {
+ status = get_local_group(MAGIC_NONLOCAL_GROUPNAME,
+ &nonlocal_users_group, &buffer, errnop);
+ if (status == NSS_STATUS_SUCCESS) {
+ free(buffer);
+ if (!add_group(nonlocal_users_group.gr_gid, start, size, groupsp,
+ limit, errnop, &status))
+ return status;
+ } else if (status == NSS_STATUS_TRYAGAIN) {
+ return status;
+ } else {
+ syslog(LOG_WARNING, "nss_nonlocal: Group %s does not exist locally!",
+ MAGIC_NONLOCAL_GROUPNAME);
+ }
+ }