Branch: master

125cf0a7 2016-09-04 23:15:13 Timothy Pearson
Make cryptographic card reader detection on single readers sytems more robust
M tdecore/tdehw/tdecryptographiccarddevice.cpp
diff --git a/tdecore/tdehw/tdecryptographiccarddevice.cpp b/tdecore/tdehw/tdecryptographiccarddevice.cpp
index 4e3e6f7..919a708 100644
--- a/tdecore/tdehw/tdecryptographiccarddevice.cpp
+++ b/tdecore/tdehw/tdecryptographiccarddevice.cpp
@@ -171,10 +171,17 @@
 						SCardDisconnect(hCard, SCARD_LEAVE_CARD);
 					}
 
-					if (!readers[i].contains(cardDevice->friendlyName())) {
-						if (!cardDevice->friendlyName().contains(reader_vendor_name) ||
-							((reader_interface_type != "") && !cardDevice->friendlyName().contains(reader_vendor_name))) {
-							continue;
+					/* FIXME
+					 * If only one reader was detected by PCSC, assume it corresponds to the current device node.
+					 * This is fragile, but avoids corner cases with common systems failing to work due to
+					 * mismatched udev / PCSC card reader vendor names...
+					 */
+					if (readers.count() > 1) {
+						if (!readers[i].contains(cardDevice->friendlyName())) {
+							if (!cardDevice->friendlyName().contains(reader_vendor_name) ||
+								((reader_interface_type != "") && !cardDevice->friendlyName().contains(reader_vendor_name))) {
+								continue;
+							}
 						}
 					}