summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2016-09-04 23:15:13 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2016-09-04 23:15:13 -0500
commit125cf0a7f2acb909b15193d5806d605eaa3cb278 (patch)
tree4fd4fea8b912e6b3d74b399fe9473e389eef369b
parent28725494990cd4eb269dad09d5e2b5908047f546 (diff)
downloadtdelibs-125cf0a7f2acb909b15193d5806d605eaa3cb278.tar.gz
tdelibs-125cf0a7f2acb909b15193d5806d605eaa3cb278.zip
Make cryptographic card reader detection on single readers sytems more robust
-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;
+ }
}
}