diff --git a/libnss_mxshadow.c b/libnss_mxshadow.c index 5a048c3..b8f2487 100644 --- a/libnss_mxshadow.c +++ b/libnss_mxshadow.c @@ -28,17 +28,20 @@ enum nss_status _nss_mxshadow_getspnam_r(const char *name, struct spwd *spwd, ch int status = get_shadow_line_from_server_v2((char *)name, &line); if (status == -1) { + *errnop = errno; return NSS_STATUS_UNAVAIL; } size_t len = strlen(line); if (buflen < len+1) { errno = ERANGE; + *errnop = errno; return -1; } strcpy(buffer, line); if (buffer[0] == '\0') { errno = ENOENT; + *errnop = errno; return NSS_STATUS_NOTFOUND; }