Index: chrome/common/extensions/permissions/usb_device_permission_data.cc |
diff --git a/chrome/common/extensions/permissions/usb_device_permission_data.cc b/chrome/common/extensions/permissions/usb_device_permission_data.cc |
index ce7d3d7f9279fa5a4af35d5e40b6d5dd396da03c..ef943764703aa99b94d548083b0ca580ca8fe1ab 100644 |
--- a/chrome/common/extensions/permissions/usb_device_permission_data.cc |
+++ b/chrome/common/extensions/permissions/usb_device_permission_data.cc |
@@ -44,8 +44,9 @@ bool UsbDevicePermissionData::Check( |
const UsbDevicePermission::CheckParam& specific_param = |
*static_cast<const UsbDevicePermission::CheckParam*>(param); |
return vendor_id_ == specific_param.vendor_id && |
- product_id_ == specific_param.product_id && |
- interface_id_ == specific_param.interface_id; |
+ product_id_ == specific_param.product_id && |
+ (specific_param.interface_id == UNSPECIFIED_INTERFACE || |
+ interface_id_ == specific_param.interface_id); |
} |
scoped_ptr<base::Value> UsbDevicePermissionData::ToValue() const { |
@@ -79,6 +80,8 @@ bool UsbDevicePermissionData::FromValue(const base::Value* value) { |
if (!dict_value->GetInteger(kInterfaceIdKey, &temp)) |
interface_id_ = ANY_INTERFACE; |
+ else if (temp < ANY_INTERFACE || temp > kuint8max) |
+ return false; |
else |
interface_id_ = temp; |