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;
+ }
}
}
|