diff --git a/ChangeLog b/ChangeLog index 492d31d0..4f4ae899 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-04-22 Paul Szabo + + * src/login.c: utent might be NULL after get_current_utmp(). + 2009-04-22 Nicolas François * src/login.c: Removed temp_shell. No more used. diff --git a/src/login.c b/src/login.c index 970180cb..251b526c 100644 --- a/src/login.c +++ b/src/login.c @@ -563,6 +563,7 @@ int main (int argc, char **argv) (void) puts (_("No utmp entry. You must exec \"login\" from the lowest level \"sh\"")); exit (1); } + /* NOTE: utent might be NULL afterwards */ tmptty = ttyname (0); if (NULL == tmptty) { @@ -655,15 +656,12 @@ int main (int argc, char **argv) if (rflg || hflg) { cp = hostname; - } else { #ifdef HAVE_STRUCT_UTMP_UT_HOST - if ('\0' != utent->ut_host[0]) { - cp = utent->ut_host; - } else + } else if ((NULL != utent) && ('\0' != utent->ut_host[0])) { + cp = utent->ut_host; #endif /* HAVE_STRUCT_UTMP_UT_HOST */ - { - cp = ""; - } + } else { + cp = ""; } if ('\0' != *cp) {