* libmisc/failure.h, libmisc/failure.c, src/login.c: Added
username as first parameter of failtmp to avoid issues with non-null terminated ut_user, unavailability of ut_user, incomplete username (that should not happen currently).
This commit is contained in:
parent
f3bea401e9
commit
a87e747049
@ -288,7 +288,7 @@ void failprint (const struct faillog *fail)
|
|||||||
* maintains a record of all login failures.
|
* maintains a record of all login failures.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void failtmp (
|
void failtmp (const char *username,
|
||||||
#ifdef HAVE_UTMPX_H
|
#ifdef HAVE_UTMPX_H
|
||||||
const struct utmpx *failent
|
const struct utmpx *failent
|
||||||
#else
|
#else
|
||||||
@ -320,13 +320,9 @@ void failtmp (
|
|||||||
|
|
||||||
fd = open (ftmp, O_WRONLY | O_APPEND);
|
fd = open (ftmp, O_WRONLY | O_APPEND);
|
||||||
if (-1 == fd) {
|
if (-1 == fd) {
|
||||||
char ut_user[sizeof failent->ut_user];
|
|
||||||
(void) strncpy (&ut_user[0], failent->ut_user, sizeof ut_user);
|
|
||||||
ut_user[sizeof ut_user - 1] = '\0';
|
|
||||||
|
|
||||||
SYSLOG ((LOG_WARN,
|
SYSLOG ((LOG_WARN,
|
||||||
"Can't append failure of user %s to %s.",
|
"Can't append failure of user %s to %s.",
|
||||||
ut_user, ftmp));
|
username, ftmp));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,13 +332,9 @@ void failtmp (
|
|||||||
|
|
||||||
if ( (write (fd, (const void *) failent, sizeof *failent) != (ssize_t) sizeof *failent)
|
if ( (write (fd, (const void *) failent, sizeof *failent) != (ssize_t) sizeof *failent)
|
||||||
|| (close (fd) != 0)) {
|
|| (close (fd) != 0)) {
|
||||||
char ut_user[sizeof failent->ut_user];
|
|
||||||
(void) strncpy (&ut_user[0], failent->ut_user, sizeof ut_user);
|
|
||||||
ut_user[sizeof ut_user - 1] = '\0';
|
|
||||||
|
|
||||||
SYSLOG ((LOG_WARN,
|
SYSLOG ((LOG_WARN,
|
||||||
"Can't append failure of user %s to %s.",
|
"Can't append failure of user %s to %s.",
|
||||||
ut_user, ftmp));
|
username, ftmp));
|
||||||
(void) close (fd);
|
(void) close (fd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) 1990 - 1994, Julianne Frances Haugh
|
* Copyright (c) 1990 - 1994, Julianne Frances Haugh
|
||||||
* Copyright (c) 1997 - 2000, Marek Michałkiewicz
|
* Copyright (c) 1997 - 2000, Marek Michałkiewicz
|
||||||
* Copyright (c) 2005 , Tomasz Kłoczko
|
* Copyright (c) 2005 , Tomasz Kłoczko
|
||||||
* Copyright (c) 2008 , Nicolas François
|
* Copyright (c) 2008 - 2009, Nicolas François
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -75,9 +75,9 @@ extern void failprint (const struct faillog *);
|
|||||||
* maintains a record of all login failures.
|
* maintains a record of all login failures.
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_UTMPX_H
|
#ifdef HAVE_UTMPX_H
|
||||||
extern void failtmp (const struct utmpx *);
|
extern void failtmp (const char *username, const struct utmpx *);
|
||||||
#else
|
#else
|
||||||
extern void failtmp (const struct utmp *);
|
extern void failtmp (const char *username, const struct utmp *);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -997,7 +997,7 @@ int main (int argc, char **argv)
|
|||||||
strncpy (failent.ut_user, failent_user,
|
strncpy (failent.ut_user, failent_user,
|
||||||
sizeof (failent.ut_user));
|
sizeof (failent.ut_user));
|
||||||
failent.ut_type = USER_PROCESS;
|
failent.ut_type = USER_PROCESS;
|
||||||
failtmp (&failent);
|
failtmp (failent_user, &failent);
|
||||||
}
|
}
|
||||||
|
|
||||||
retries--;
|
retries--;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user