summaryrefslogtreecommitdiff
path: root/services/usb/java
diff options
context:
space:
mode:
authorPhilip P. Moltmann <moltmann@google.com>2019-05-24 15:56:17 -0700
committerPhilip P. Moltmann <moltmann@google.com>2019-05-28 17:51:39 +0000
commite89688fcd7076f6a531ce7b91458f6c3159996bb (patch)
tree212b41e3bcea219f669d6dfe12e47990cec1c5bb /services/usb/java
parent3fb12ba4902605668faa22a93f0881ab333ec11d (diff)
Check USB device/accessory perms with sys identity
As checking the permissions might call UsbDevice/UsbAccessory.getSerial again, we have to make sure that in this code paths we run with the system's identity so that we can always resolve the serial number. Test: CtsVerifier UsbAccessory/UsbDevice test Fixes: 117606509 Change-Id: I777be10b806ab02046f99805806ae1a16ebb0203
Diffstat (limited to 'services/usb/java')
-rw-r--r--services/usb/java/com/android/server/usb/UsbSerialReader.java24
1 files changed, 12 insertions, 12 deletions
diff --git a/services/usb/java/com/android/server/usb/UsbSerialReader.java b/services/usb/java/com/android/server/usb/UsbSerialReader.java
index 32fc796e7e05..8ca77f0c63dc 100644
--- a/services/usb/java/com/android/server/usb/UsbSerialReader.java
+++ b/services/usb/java/com/android/server/usb/UsbSerialReader.java
@@ -85,22 +85,22 @@ class UsbSerialReader extends IUsbSerialReader.Stub {
throw new RemoteException("package " + packageName + " cannot be found");
}
packageTargetSdkVersion = pkg.applicationInfo.targetSdkVersion;
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- if (packageTargetSdkVersion >= Build.VERSION_CODES.Q) {
- if (mContext.checkPermission(android.Manifest.permission.MANAGE_USB, pid, uid)
- == PackageManager.PERMISSION_DENIED) {
- UsbUserSettingsManager settings = mSettingsManager.getSettingsForUser(
- UserHandle.getUserId(uid));
+ if (packageTargetSdkVersion >= Build.VERSION_CODES.Q) {
+ if (mContext.checkPermission(android.Manifest.permission.MANAGE_USB, pid, uid)
+ == PackageManager.PERMISSION_DENIED) {
+ UsbUserSettingsManager settings = mSettingsManager.getSettingsForUser(
+ UserHandle.getUserId(uid));
- if (mDevice instanceof UsbDevice) {
- settings.checkPermission((UsbDevice) mDevice, packageName, uid);
- } else {
- settings.checkPermission((UsbAccessory) mDevice, uid);
+ if (mDevice instanceof UsbDevice) {
+ settings.checkPermission((UsbDevice) mDevice, packageName, uid);
+ } else {
+ settings.checkPermission((UsbAccessory) mDevice, uid);
+ }
}
}
+ } finally {
+ Binder.restoreCallingIdentity(token);
}
}