@@ -210,6 +210,7 @@ enum nss_status _nss_systemd_getpwnam_r(
|
||||
|
||||
l = strlen(name);
|
||||
if (buflen < l+1) {
|
||||
UNPROTECT_ERRNO;
|
||||
*errnop = ERANGE;
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
@@ -227,6 +228,7 @@ enum nss_status _nss_systemd_getpwnam_r(
|
||||
return NSS_STATUS_SUCCESS;
|
||||
|
||||
fail:
|
||||
UNPROTECT_ERRNO;
|
||||
*errnop = -r;
|
||||
return NSS_STATUS_UNAVAIL;
|
||||
}
|
||||
@@ -310,6 +312,7 @@ enum nss_status _nss_systemd_getpwuid_r(
|
||||
|
||||
l = strlen(translated) + 1;
|
||||
if (buflen < l) {
|
||||
UNPROTECT_ERRNO;
|
||||
*errnop = ERANGE;
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
@@ -327,6 +330,7 @@ enum nss_status _nss_systemd_getpwuid_r(
|
||||
return NSS_STATUS_SUCCESS;
|
||||
|
||||
fail:
|
||||
UNPROTECT_ERRNO;
|
||||
*errnop = -r;
|
||||
return NSS_STATUS_UNAVAIL;
|
||||
}
|
||||
@@ -408,6 +412,7 @@ enum nss_status _nss_systemd_getgrnam_r(
|
||||
|
||||
l = sizeof(char*) + strlen(name) + 1;
|
||||
if (buflen < l) {
|
||||
UNPROTECT_ERRNO;
|
||||
*errnop = ERANGE;
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
@@ -423,6 +428,7 @@ enum nss_status _nss_systemd_getgrnam_r(
|
||||
return NSS_STATUS_SUCCESS;
|
||||
|
||||
fail:
|
||||
UNPROTECT_ERRNO;
|
||||
*errnop = -r;
|
||||
return NSS_STATUS_UNAVAIL;
|
||||
}
|
||||
@@ -506,6 +512,7 @@ enum nss_status _nss_systemd_getgrgid_r(
|
||||
|
||||
l = sizeof(char*) + strlen(translated) + 1;
|
||||
if (buflen < l) {
|
||||
UNPROTECT_ERRNO;
|
||||
*errnop = ERANGE;
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
@@ -521,6 +528,7 @@ enum nss_status _nss_systemd_getgrgid_r(
|
||||
return NSS_STATUS_SUCCESS;
|
||||
|
||||
fail:
|
||||
UNPROTECT_ERRNO;
|
||||
*errnop = -r;
|
||||
return NSS_STATUS_UNAVAIL;
|
||||
}
|
||||
@@ -740,6 +748,7 @@ enum nss_status _nss_systemd_getpwent_r(struct passwd *result, char *buffer, siz
|
||||
LIST_FOREACH(entries, p, getpwent_data.position) {
|
||||
len = strlen(p->name) + 1;
|
||||
if (buflen < len) {
|
||||
UNPROTECT_ERRNO;
|
||||
*errnop = ERANGE;
|
||||
ret = NSS_STATUS_TRYAGAIN;
|
||||
goto finalize;
|
||||
@@ -791,6 +800,7 @@ enum nss_status _nss_systemd_getgrent_r(struct group *result, char *buffer, size
|
||||
LIST_FOREACH(entries, p, getgrent_data.position) {
|
||||
len = sizeof(char*) + strlen(p->name) + 1;
|
||||
if (buflen < len) {
|
||||
UNPROTECT_ERRNO;
|
||||
*errnop = ERANGE;
|
||||
ret = NSS_STATUS_TRYAGAIN;
|
||||
goto finalize;
|
||||
|
||||
Reference in New Issue
Block a user