continue;
if (is_policy_temporary(entry) ? strncmp(entry->devpath, req->devpath, PATH_MAX) :
- entry->device.bcdUSB != le16toh(req->desc.bcdUSB)
- || entry->device.bDeviceClass != req->desc.bDeviceClass
- || entry->device.bDeviceSubClass != req->desc.bDeviceSubClass
- || entry->device.bDeviceProtocol != req->desc.bDeviceProtocol
- || entry->device.idVendor != le16toh(req->desc.idVendor)
- || entry->device.idProduct != le16toh(req->desc.idProduct)
- || entry->device.bcdDevice != le16toh(req->desc.bcdDevice))
+ (entry->device.bcdUSB && entry->device.bcdUSB != le16toh(req->desc.bcdUSB))
+ || (entry->device.bDeviceClass && entry->device.bDeviceClass != req->desc.bDeviceClass)
+ || (entry->device.bDeviceSubClass && entry->device.bDeviceSubClass != req->desc.bDeviceSubClass)
+ || (entry->device.bDeviceProtocol && entry->device.bDeviceProtocol != req->desc.bDeviceProtocol)
+ || (entry->device.idVendor && entry->device.idVendor != le16toh(req->desc.idVendor))
+ || (entry->device.idProduct && entry->device.idProduct != le16toh(req->desc.idProduct))
+ || (entry->device.bcdDevice && entry->device.bcdDevice != le16toh(req->desc.bcdDevice)))
continue;
_I("Found matching policy entry: %s", policy_value_str(entry->value));