# define format_attr(type, index, check)
#endif
-/* Maximum length of usernames */
-#include <utmp.h>
-#define USER_NAME_MAX_LENGTH (sizeof (((struct utmp *)NULL)->ut_user))
-
/* Maximum length of passwd entry */
#define PASSWD_ENTRY_MAX_LENGTH 32768
bool is_valid_user_name (const char *name)
{
/*
- * User names are limited by whatever utmp can
- * handle.
+ * User names length are limited by the kernel
*/
- if (strlen (name) > USER_NAME_MAX_LENGTH) {
+ if (strlen (name) > sysconf(_SC_LOGIN_NAME_MAX)) {
return false;
}
}
#ifdef RLOGIN
if (rflg) {
+ size_t max_size = sysconf(_SC_LOGIN_NAME_MAX);
assert (NULL == username);
- username = XMALLOC(USER_NAME_MAX_LENGTH + 1, char);
- username[USER_NAME_MAX_LENGTH] = '\0';
- if (do_rlogin (hostname, username, USER_NAME_MAX_LENGTH, term, sizeof term)) {
+ username = XMALLOC(max_size + 1, char);
+ username[max_size] = '\0';
+ if (do_rlogin (hostname, username, max_size, term, sizeof term)) {
preauth_flag = true;
} else {
free (username);
failed = false; /* haven't failed authentication yet */
if (NULL == username) { /* need to get a login id */
+ size_t max_size = sysconf(_SC_LOGIN_NAME_MAX);
if (subroot) {
closelog ();
exit (1);
}
preauth_flag = false;
- username = XMALLOC(USER_NAME_MAX_LENGTH + 1, char);
- username[USER_NAME_MAX_LENGTH] = '\0';
- login_prompt (username, USER_NAME_MAX_LENGTH);
+ username = XMALLOC(max_size + 1, char);
+ username[max_size] = '\0';
+ login_prompt (username, max_size);
if ('\0' == username[0]) {
/* Prompt for a new login */