--- kdm/backend/session.c +++ kdm/bakcend/session.c @@ -121,8 +121,9 @@ static void DoAutoLogon( void ) { - StrDup( &curuser, td->autoUser ); - StrDup( &curpass, td->autoPass ); + ReStr( &curuser, td->autoUser ); + ReStr( &curpass, td->autoPass ); + ReStr( &curtype, "classic" ); cursource = PWSRC_AUTOLOGIN; } @@ -141,7 +142,9 @@ td->hstent->npass = 0; newdmrc = td->hstent->nargs; td->hstent->nargs = 0; + ReStr( &curtype, "classic" ); cursource = (td->hstent->rLogin == 1) ? PWSRC_RELOGIN : PWSRC_MANUAL; + return 1; } else if (*td->autoUser && !td->autoDelay && (tdiff > 0 || td->autoAgain)) { unsigned int lmask; @@ -153,11 +156,9 @@ if (lmask & ShiftMask) return 0; DoAutoLogon(); - } else { - cursource = PWSRC_MANUAL; - return 0; + return 1; } - return 1; + return 0; } @@ -369,6 +370,7 @@ if (curtype) free( curtype ); curtype = GRecvStr(); Debug( " type %\"s\n", curtype ); + cursource = PWSRC_MANUAL; if (Verify( conv_interact, rootok )) { Debug( " -> return success\n" ); GSendInt( V_OK ); @@ -378,7 +380,6 @@ case G_AutoLogin: Debug( "G_AutoLogin\n" ); DoAutoLogon(); - StrDup( &curtype, "classic" ); if (Verify( conv_auto, FALSE )) { Debug( " -> return success\n" ); GSendInt( V_OK ); @@ -565,7 +566,7 @@ tdiff = td->autoAgain ? 1 : time( 0 ) - td->hstent->lastExit - td->openDelay; if (AutoLogon( tdiff )) { - if (!StrDup( &curtype, "classic" ) || !Verify( conv_auto, FALSE )) + if (!Verify( conv_auto, FALSE )) goto gcont; if (greeter) GSendInt( V_OK );