- CFRef<CFNumberRef> cfClass(dev.property<CFNumberRef>("bInterfaceClass"));
- if (!cfClass) {
- secdebug("scsel", " device without device class (ignored)");
- return impossible;
- }
- switch (IFDEBUG(uint32 clas =) cfNumber(cfClass)) {
- case kUSBChipSmartCardInterfaceClass: // CCID smartcard reader - go
- secdebug("scsel", " CCID smartcard reader recognized");
- return definite;
- case kUSBVendorSpecificInterfaceClass:
- secdebug("scsel", " Vendor-specific device - possible match");
- return possible;
- default:
- secdebug("scsel", " class %ld is not a smartcard device", clas);
- return impossible;
- }
+ if (CFRef<CFNumberRef> cfInterface = dev.property<CFNumberRef>("bInterfaceClass"))
+ switch (IFDEBUG(uint32 clas =) cfNumber(cfInterface)) {
+ case kUSBChipSmartCardInterfaceClass: // CCID smartcard reader - go
+ secdebug("scsel", " CCID smartcard reader recognized");
+ return definite;
+ case kUSBVendorSpecificInterfaceClass:
+ secdebug("scsel", " Vendor-specific interface - possible match");
+ return possible;
+ default:
+ secdebug("scsel", " interface class %ld is not a smartcard device", clas);
+ return impossible;
+ }
+ if (CFRef<CFNumberRef> cfDevice = dev.property<CFNumberRef>("bDeviceClass"))
+ if (cfNumber(cfDevice) == kUSBVendorSpecificClass) {
+ secdebug("scsel", " Vendor-specific device - possible match");
+ return possible;
+ }
+ return impossible;