diff --git a/ChangeLog b/ChangeLog index 301d08d8..4847e133 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-05-16 Nicolas François + + * libmisc/console.c (console): Remove the leading /dev/ from the + tty before comparing with the lines specified by CONSOLE. + * src/su.c: Do not remove the /dev/ prefix since it is done by + console(). + 2009-05-16 Nicolas François * man/login.defs.d/CONSOLE.xml: Document the format of the CONSOLE diff --git a/libmisc/console.c b/libmisc/console.c index 458aaf2e..20fbd7f5 100644 --- a/libmisc/console.c +++ b/libmisc/console.c @@ -121,6 +121,10 @@ static bool is_listed (const char *cfgin, const char *tty, bool def) bool console (const char *tty) { + if (strncmp (tty, "/dev/", 5) == 0) { + tty += 5; + } + return is_listed ("CONSOLE", tty, true); } diff --git a/src/su.c b/src/su.c index 57df663a..80f8667d 100644 --- a/src/su.c +++ b/src/su.c @@ -425,13 +425,8 @@ int main (int argc, char **argv) * Get the tty name. Entries will be logged indicating that the user * tried to change to the named new user from the current terminal. */ - cp = ttyname (0); - if ((isatty (0) != 0) && (NULL != cp)) { - if (strncmp (cp, "/dev/", 5) == 0) { - tty = cp + 5; - } else { - tty = cp; - } + tty = ttyname (0); + if ((isatty (0) != 0) && (NULL != tty)) { #ifndef USE_PAM is_console = console (tty); #endif