* lib/defines.h: Define USER_NAME_MAX_LENGTH, based on utmp and
default to 32. * libmisc/chkname.c: Use USER_NAME_MAX_LENGTH. * src/login.c: Use USER_NAME_MAX_LENGTH instead of the default 32. username also needs to be bigger than USER_NAME_MAX_LENGTH because it has to be nul-terminated.
This commit is contained in:
parent
eae8b63d4f
commit
3704745289
@ -1,3 +1,12 @@
|
|||||||
|
2009-04-22 Nicolas François <nicolas.francois@centraliens.net>
|
||||||
|
|
||||||
|
* lib/defines.h: Define USER_NAME_MAX_LENGTH, based on utmp and
|
||||||
|
default to 32.
|
||||||
|
* libmisc/chkname.c: Use USER_NAME_MAX_LENGTH.
|
||||||
|
* src/login.c: Use USER_NAME_MAX_LENGTH instead of the default 32.
|
||||||
|
username also needs to be bigger than USER_NAME_MAX_LENGTH because
|
||||||
|
it has to be nul-terminated.
|
||||||
|
|
||||||
2009-04-22 Nicolas François <nicolas.francois@centraliens.net>
|
2009-04-22 Nicolas François <nicolas.francois@centraliens.net>
|
||||||
|
|
||||||
* src/login.c: Use xmalloc() instead of malloc().
|
* src/login.c: Use xmalloc() instead of malloc().
|
||||||
|
@ -356,4 +356,19 @@ extern char *strerror ();
|
|||||||
#define MAX(x,y) (((x) > (y)) ? (x) : (y))
|
#define MAX(x,y) (((x) > (y)) ? (x) : (y))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Maximum length of usernames */
|
||||||
|
#ifdef HAVE_UTMPX_H
|
||||||
|
# define USER_NAME_MAX_LENGTH (sizeof (((struct utmpx *)NULL)->ut_user))
|
||||||
|
#else
|
||||||
|
# ifdef HAVE_STRUCT_UTMP_UT_USER
|
||||||
|
# define USER_NAME_MAX_LENGTH (sizeof (((struct utmp *)NULL)->ut_user))
|
||||||
|
# else
|
||||||
|
# ifdef HAVE_STRUCT_UTMP_UT_NAME
|
||||||
|
# define USER_NAME_MAX_LENGTH (sizeof (((struct utmp *)NULL)->ut_name))
|
||||||
|
# else
|
||||||
|
# define USER_NAME_MAX_LENGTH 32
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _DEFINES_H_ */
|
#endif /* _DEFINES_H_ */
|
||||||
|
@ -77,17 +77,11 @@ static bool is_valid_name (const char *name)
|
|||||||
|
|
||||||
bool is_valid_user_name (const char *name)
|
bool is_valid_user_name (const char *name)
|
||||||
{
|
{
|
||||||
#if HAVE_UTMPX_H
|
|
||||||
struct utmpx ut;
|
|
||||||
#else
|
|
||||||
struct utmp ut;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* User names are limited by whatever utmp can
|
* User names are limited by whatever utmp can
|
||||||
* handle.
|
* handle.
|
||||||
*/
|
*/
|
||||||
if (strlen (name) > sizeof (ut.ut_user)) {
|
if (strlen (name) > USER_NAME_MAX_LENGTH) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
10
src/login.c
10
src/login.c
@ -610,8 +610,9 @@ int main (int argc, char **argv)
|
|||||||
}
|
}
|
||||||
#ifdef RLOGIN
|
#ifdef RLOGIN
|
||||||
if (rflg) {
|
if (rflg) {
|
||||||
username = xmalloc (32 * sizeof (char));
|
username = xmalloc (USER_NAME_MAX_LENGTH + 1);
|
||||||
if (do_rlogin (hostname, username, 32, term, sizeof term)) {
|
username[USER_NAME_MAX_LENGTH] = '\0';
|
||||||
|
if (do_rlogin (hostname, username, USER_NAME_MAX_LENGTH, term, sizeof term)) {
|
||||||
preauth_flag = true;
|
preauth_flag = true;
|
||||||
} else {
|
} else {
|
||||||
free (username);
|
free (username);
|
||||||
@ -920,8 +921,9 @@ int main (int argc, char **argv)
|
|||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
preauth_flag = false;
|
preauth_flag = false;
|
||||||
username = xmalloc (32);
|
username = xmalloc (USER_NAME_MAX_LENGTH + 1);
|
||||||
login_prompt (_("\n%s login: "), username, 32);
|
username[USER_NAME_MAX_LENGTH] = '\0';
|
||||||
|
login_prompt (_("\n%s login: "), username, USER_NAME_MAX_LENGTH);
|
||||||
|
|
||||||
if ('\0' == username) {
|
if ('\0' == username) {
|
||||||
/* Prompt for a new login */
|
/* Prompt for a new login */
|
||||||
|
Loading…
Reference in New Issue
Block a user