--- kdm/backend/session.c
+++ kdm/backend/session.c
@@ -136,7 +136,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 && tdiff > 0) {
               unsigned int lmask;
               Window dummy1, dummy2;
@@ -146,14 +148,13 @@
                              &lmask );
               if (lmask & ShiftMask)
                       return 0;
-               StrDup( &curuser, td->autoUser );
-               StrDup( &curpass, td->autoPass );
+               ReStr( &curuser, td->autoUser );
+               ReStr( &curpass, td->autoPass );
+               ReStr( &curtype, "classic" );
               cursource = PWSRC_AUTOLOGIN;
-       } else {
-               cursource = PWSRC_MANUAL;
-               return 0;
+               return 1;
       }
-       return 1;
+       return 0;
}


@@ -365,6 +366,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 );
@@ -548,7 +550,7 @@
       }

       if (AutoLogon()) {
-               if (!StrDup( &curtype, "classic" ) || !Verify( conv_auto, FALSE ))
+               if (!Verify( conv_auto, FALSE ))
                       goto gcont;
               if (greeter)
                       GSendInt( V_OK );