* libmisc/utmp.c: The name returned by ttyame() needs to be copied
locally.
This commit is contained in:
parent
54302f6006
commit
b05783da32
@ -1,3 +1,8 @@
|
|||||||
|
2009-04-22 Nicolas François <nicolas.francois@centraliens.net>
|
||||||
|
|
||||||
|
* libmisc/utmp.c: The name returned by ttyame() needs to be copied
|
||||||
|
locally.
|
||||||
|
|
||||||
2009-04-22 Nicolas François <nicolas.francois@centraliens.net>
|
2009-04-22 Nicolas François <nicolas.francois@centraliens.net>
|
||||||
|
|
||||||
* src/login.c: Added assert()s for NULL (or ! NULL) username, and
|
* src/login.c: Added assert()s for NULL (or ! NULL) username, and
|
||||||
|
@ -56,22 +56,28 @@
|
|||||||
*/
|
*/
|
||||||
static bool is_my_tty (const char *tty)
|
static bool is_my_tty (const char *tty)
|
||||||
{
|
{
|
||||||
|
/* full_tty shall be at least sizeof utmp.ut_line + 5 */
|
||||||
char full_tty[200];
|
char full_tty[200];
|
||||||
static const char *tmptty = NULL;
|
/* tmptty shall be bigger than full_tty */
|
||||||
|
static char tmptty[sizeof (full_tty)+1];
|
||||||
|
|
||||||
if ('/' != *tty) {
|
if ('/' != *tty) {
|
||||||
snprintf (full_tty, sizeof full_tty, "/dev/%s", tty);
|
(void) snprintf (full_tty, sizeof full_tty, "/dev/%s", tty);
|
||||||
tty = full_tty;
|
tty = &full_tty[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NULL == tmptty) {
|
if ('\0' == tmptty[0]) {
|
||||||
tmptty = ttyname (STDIN_FILENO);
|
const char *tname = ttyname (STDIN_FILENO);
|
||||||
|
if (NULL != tname) {
|
||||||
|
(void) strncpy (tmptty, tname, sizeof tmptty);
|
||||||
|
tmptty[sizeof (tmptty) - 1] = '\0';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NULL == tmptty) {
|
if (NULL == tmptty) {
|
||||||
(void) puts (_("Unable to determine your tty name."));
|
(void) puts (_("Unable to determine your tty name."));
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
} else if (strcmp (tty, tmptty) != 0) {
|
} else if (strncmp (tty, tmptty, sizeof (tmptty)) != 0) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user