pam_localuser: reject user names that are too long

Too long user names used to be truncated which could potentially result
to false match and, consequently, to incorrect PAM_SUCCESS return value.

* modules/pam_localuser/pam_localuser.c (pam_sm_authenticate): Return
PAM_SERVICE_ERR if the user name is too long.
This commit is contained in:
Dmitry V. Levin 2020-05-01 21:44:59 +00:00
parent bd3cdf24ee
commit e35c10e968

View File

@ -106,6 +106,12 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED,
return PAM_SYSTEM_ERR;
}
if (strlen(user) > sizeof(name) - sizeof(":")) {
pam_syslog (pamh, LOG_ERR, "user name too long");
fclose(fp);
return PAM_SERVICE_ERR;
}
if (strchr(user, ':') != NULL) {
/*
* "root:x" is not a local user name even if the passwd file