Branch: master

1757afec 2016-09-22 20:27:19 Timothy Pearson
Force card logins to authenticate against the username specified in the card certificate
M tdm/kfrontend/kgreeter.cpp
M tdm/kfrontend/kgverify.cpp
diff --git a/tdm/kfrontend/kgreeter.cpp b/tdm/kfrontend/kgreeter.cpp
index 6ce76eb..a42ffd0 100644
--- a/tdm/kfrontend/kgreeter.cpp
+++ b/tdm/kfrontend/kgreeter.cpp
@@ -639,12 +639,13 @@
 {
 	if (userView) {
 		TQListViewItem *item;
-		for (item = userView->firstChild(); item; item = item->nextSibling())
+		for (item = userView->firstChild(); item; item = item->nextSibling()) {
 			if (((UserListViewItem *)item)->login == curUser) {
 				userView->setSelected( item, true );
 				userView->ensureItemVisible( item );
 				goto oke;
 			}
+		}
 		userView->clearSelection();
 	}
   oke:
@@ -915,6 +916,7 @@
 		if (!user_active && vt_active) {
 			// Select the correct user
 			verify->setUser(login_name);
+			userView->setEnabled(false);
 			verifySetUser(login_name);
 			verify->lockUserEntry(true);
 
@@ -936,6 +938,7 @@
 
 void KGreeter::cryptographicCardRemoved(TDECryptographicCardDevice* cdevice) {
 	cardLoginUser = TQString::null;
+	userView->setEnabled(false);
 	verify->lockUserEntry(false);
         verify->requestAbort();
         verify->setPasswordPrompt(TQString::null);
diff --git a/tdm/kfrontend/kgverify.cpp b/tdm/kfrontend/kgverify.cpp
index a3464a5..93bcce2 100644
--- a/tdm/kfrontend/kgverify.cpp
+++ b/tdm/kfrontend/kgverify.cpp
@@ -323,8 +323,10 @@
 			if (!_autoLoginAgain)
 				_autoLoginDelay = 0, timeable = false;
 			return;
-		} else
+		}
+		else if (!cardLoginInProgress) {
 			applyPreset();
+		}
 	}
 	running = true;
 	Debug( "%s->start()\n", pName.data() );