summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tdecore/tdehw/tdecryptographiccarddevice.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/tdecore/tdehw/tdecryptographiccarddevice.cpp b/tdecore/tdehw/tdecryptographiccarddevice.cpp
index 4e3e6f77d..919a708e2 100644
--- a/tdecore/tdehw/tdecryptographiccarddevice.cpp
+++ b/tdecore/tdehw/tdecryptographiccarddevice.cpp
@@ -171,10 +171,17 @@ void CryptoCardDeviceWatcher::run() {
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;
+ }
}
}