int *errnop)
{
enum nss_status status;
+
+ char *nonlocal_ignore = getenv(NONLOCAL_IGNORE_ENV);
+ if (buflen == MAGIC_LOCAL_GR_BUFLEN ||
+ (nonlocal_ignore != NULL && nonlocal_ignore[0] != '\0'))
+ return NSS_STATUS_UNAVAIL;
+
if (grent_nip == NULL) {
status = _nss_nonlocal_setgrent(0);
if (status != NSS_STATUS_SUCCESS)
void *ptr;
} fct;
- if (buflen == MAGIC_LOCAL_GR_BUFLEN)
+ char *nonlocal_ignore = getenv(NONLOCAL_IGNORE_ENV);
+ if (buflen == MAGIC_LOCAL_GR_BUFLEN ||
+ (nonlocal_ignore != NULL && nonlocal_ignore[0] != '\0'))
return NSS_STATUS_UNAVAIL;
nip = nss_group_nonlocal_database();
void *ptr;
} fct;
- if (buflen == MAGIC_LOCAL_GR_BUFLEN)
+ char *nonlocal_ignore = getenv(NONLOCAL_IGNORE_ENV);
+ if (buflen == MAGIC_LOCAL_GR_BUFLEN ||
+ (nonlocal_ignore != NULL && nonlocal_ignore[0] != '\0'))
return NSS_STATUS_UNAVAIL;
nip = nss_group_nonlocal_database();
int *errnop)
{
enum nss_status status;
+
+ char *nonlocal_ignore = getenv(NONLOCAL_IGNORE_ENV);
+ if (buflen == MAGIC_LOCAL_PW_BUFLEN ||
+ (nonlocal_ignore != NULL && nonlocal_ignore[0] != '\0'))
+ return NSS_STATUS_UNAVAIL;
+
if (pwent_nip == NULL) {
status = _nss_nonlocal_setpwent(0);
if (status != NSS_STATUS_SUCCESS)
else {
int nonlocal_errno;
do
- status = DL_CALL_FCT(pwent_fct.l, (pwd, buffer, buflen, errnop));
+ status = DL_CALL_FCT(pwent_fct.l, (pwd, buffer, buflen, errnop));
while (status == NSS_STATUS_SUCCESS &&
check_nonlocal_uid(pwd->pw_name, pwd->pw_uid, &nonlocal_errno) != NSS_STATUS_SUCCESS);
}
} fct;
int group_errno;
- if (buflen == MAGIC_LOCAL_PW_BUFLEN)
+ char *nonlocal_ignore = getenv(NONLOCAL_IGNORE_ENV);
+ if (buflen == MAGIC_LOCAL_PW_BUFLEN ||
+ (nonlocal_ignore != NULL && nonlocal_ignore[0] != '\0'))
return NSS_STATUS_UNAVAIL;
nip = nss_passwd_nonlocal_database();
} fct;
int group_errno;
- if (buflen == MAGIC_LOCAL_PW_BUFLEN)
+ char *nonlocal_ignore = getenv(NONLOCAL_IGNORE_ENV);
+ if (buflen == MAGIC_LOCAL_PW_BUFLEN ||
+ (nonlocal_ignore != NULL && nonlocal_ignore[0] != '\0'))
return NSS_STATUS_UNAVAIL;
nip = nss_passwd_nonlocal_database();
enum nss_status check_nonlocal_uid(const char *user, uid_t uid, int *errnop);
enum nss_status check_nonlocal_gid(const char *user, gid_t gid, int *errnop);
enum nss_status check_nonlocal_user(const char *user, int *errnop);
+#define NONLOCAL_IGNORE_ENV "NSS_NONLOCAL_IGNORE"
#endif /* NON_LOCAL_H */