Branch: master

a7afe91e 2016-09-06 15:08:26 Timothy Pearson
Do not start card authentication unless PKCS logins were enabled
Rename UserList class in kgreeter.cpp to avoid conflict with TDE LDAP library class name
M kdesktop/lock/CMakeLists.txt
M kdesktop/lock/lockdlg.cc
M tdm/kfrontend/CMakeLists.txt
M tdm/kfrontend/kgreeter.cpp
diff --git a/kdesktop/lock/CMakeLists.txt b/kdesktop/lock/CMakeLists.txt
index 2bbe4b2..a0ec2f0 100644
--- a/kdesktop/lock/CMakeLists.txt
+++ b/kdesktop/lock/CMakeLists.txt
@@ -19,10 +19,12 @@
   ${CMAKE_SOURCE_DIR}/kcheckpass
   ${TDE_INCLUDE_DIR}
   ${TQT_INCLUDE_DIRS}
+  ${KRB5_INCLUDE_DIRS}
 )
 
 link_directories(
   ${TQT_LIBRARY_DIRS}
+  ${TDE_LIB_DIR}
 )
 
 
@@ -38,6 +40,7 @@
 tde_add_executable( ${target} AUTOMOC
   SOURCES ${${target}_SRCS}
   LINK kdesktopsettings-static dmctl-static tdeio-shared Xext
-    pthread ${GL_LIBRARIES} "${LINKER_IMMEDIATE_BINDING_FLAGS}"
+    pthread ${GL_LIBRARIES} ${LIBTDELDAP_LIBRARIES}
+    "${LINKER_IMMEDIATE_BINDING_FLAGS}"
   DESTINATION ${BIN_INSTALL_DIR}
 )
diff --git a/kdesktop/lock/lockdlg.cc b/kdesktop/lock/lockdlg.cc
index 8202a7f..1be892e 100644
--- a/kdesktop/lock/lockdlg.cc
+++ b/kdesktop/lock/lockdlg.cc
@@ -58,6 +58,10 @@
 #include <X11/Xatom.h>
 #include <fixx11h.h>
 
+#ifdef HAVE_KRB5
+#include <tde/libtdeldap.h>
+#endif
+
 #ifndef AF_LOCAL
 # define AF_LOCAL	AF_UNIX
 #endif
@@ -970,6 +974,13 @@
 }
 
 void PasswordDlg::attemptCardLogin() {
+#ifdef HAVE_KRB5
+	/* Make sure card logins are enabled before attempting one */
+	if (!LDAPManager::pkcsLoginEnabled()) {
+		return;
+	}
+#endif
+
 	if (mCardLoginInProgress) {
 		return;
 	}
diff --git a/tdm/kfrontend/CMakeLists.txt b/tdm/kfrontend/CMakeLists.txt
index ab2ddc6..1de0d14 100644
--- a/tdm/kfrontend/CMakeLists.txt
+++ b/tdm/kfrontend/CMakeLists.txt
@@ -22,11 +22,13 @@
   ${CMAKE_SOURCE_DIR}/kcontrol/background
   ${TDE_INCLUDE_DIR}
   ${TQT_INCLUDE_DIRS}
+  ${KRB5_INCLUDE_DIRS}
 )
 
 link_directories(
   ${TQT_LIBRARY_DIRS}
   ${LIBART_LIBRARY_DIRS}
+  ${TDE_LIB_DIR}
 )
 
 
@@ -68,7 +70,7 @@
     kfdialog.cpp kgdialog.cpp kchooser.cpp kgverify.cpp
     tdmshutdown.cpp tdmadmindialog.cpp kgreeter.cpp
     kgapp.cpp sakdlg.cc
-  LINK tdmthemer-static tdeui-shared tdeio-shared dmctl-static Xtst ${TDMGREET_OPTIONAL_LINK}
+  LINK tdmthemer-static tdeui-shared tdeio-shared dmctl-static Xtst ${LIBTDELDAP_LIBRARIES} ${TDMGREET_OPTIONAL_LINK}
   DESTINATION ${BIN_INSTALL_DIR}
 )
 
diff --git a/tdm/kfrontend/kgreeter.cpp b/tdm/kfrontend/kgreeter.cpp
index e2791d4..1143a86 100644
--- a/tdm/kfrontend/kgreeter.cpp
+++ b/tdm/kfrontend/kgreeter.cpp
@@ -99,6 +99,10 @@
 
 #include <X11/Xlib.h>
 
+#ifdef HAVE_KRB5
+#include <tde/libtdeldap.h>
+#endif
+
 #define FIFO_DIR "/tmp/tdesocket-global/tdm"
 #define FIFO_FILE "/tmp/tdesocket-global/tdm/tdmctl-%1"
 #define FIFO_SAK_FILE "/tmp/tdesocket-global/tdm/tdmctl-sak-%1"
@@ -437,9 +441,9 @@
 	}
 };
 
-class UserList {
+class KGreeterUserList {
   public:
-	UserList( char **in );
+	KGreeterUserList( char **in );
 	bool hasUser( const char *str ) const { return users.contains( str ); }
 	bool hasGroup( gid_t gid ) const
 		{ return groups.find( gid ) != groups.end(); }
@@ -450,7 +454,7 @@
 	TQValueList<gid_t> groups;
 };
 
-UserList::UserList( char **in )
+KGreeterUserList::KGreeterUserList( char **in )
 {
 	struct group *grp;
 
@@ -485,7 +489,7 @@
 			  default_pix.convertDepth( 32 ).smoothScale( ns, TQ_ScaleMin );
 	}
 	if (_showUsers == SHOW_ALL) {
-		UserList noUsers( _noUsers );
+		KGreeterUserList noUsers( _noUsers );
 		TQDict<int> dupes( 1000 );	// Potential crash risk with buffer overrun?
                 TQStringList toinsert;
                 int count = 0;
@@ -551,7 +555,7 @@
                         insertUser( default_pix, *it, ps );
                 }
 	} else {
-		UserList users( _users );
+		KGreeterUserList users( _users );
 		if (users.hasGroups()) {
 			TQDict<int> dupes( 1000 );
 			for (setpwent(); (ps = getpwent()) != 0;) {
@@ -856,6 +860,13 @@
 }
 
 void KGreeter::cryptographicCardInserted(TDECryptographicCardDevice* cdevice) {
+#ifdef HAVE_KRB5
+	/* Make sure card logins are enabled before attempting one */
+	if (!LDAPManager::pkcsLoginEnabled()) {
+		return;
+	}
+#endif
+
 	TQString login_name = TQString::null;
 	X509CertificatePtrList certList = cdevice->cardX509Certificates();
 	if (certList.count() > 0) {