summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/usb/java/com/android/server/usb/UsbSerialReader.java17
1 files changed, 12 insertions, 5 deletions
diff --git a/services/usb/java/com/android/server/usb/UsbSerialReader.java b/services/usb/java/com/android/server/usb/UsbSerialReader.java
index 5bf94afd7683..32fc796e7e05 100644
--- a/services/usb/java/com/android/server/usb/UsbSerialReader.java
+++ b/services/usb/java/com/android/server/usb/UsbSerialReader.java
@@ -75,14 +75,21 @@ class UsbSerialReader extends IUsbSerialReader.Stub {
if (uid != Process.SYSTEM_UID) {
enforcePackageBelongsToUid(uid, packageName);
- PackageInfo pkg;
+ int packageTargetSdkVersion;
+ long token = Binder.clearCallingIdentity();
try {
- pkg = mContext.getPackageManager().getPackageInfo(packageName, 0);
- } catch (PackageManager.NameNotFoundException e) {
- throw new RemoteException("package " + packageName + " cannot be found");
+ PackageInfo pkg;
+ try {
+ pkg = mContext.getPackageManager().getPackageInfo(packageName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ throw new RemoteException("package " + packageName + " cannot be found");
+ }
+ packageTargetSdkVersion = pkg.applicationInfo.targetSdkVersion;
+ } finally {
+ Binder.restoreCallingIdentity(token);
}
- if (pkg.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.Q) {
+ if (packageTargetSdkVersion >= Build.VERSION_CODES.Q) {
if (mContext.checkPermission(android.Manifest.permission.MANAGE_USB, pid, uid)
== PackageManager.PERMISSION_DENIED) {
UsbUserSettingsManager settings = mSettingsManager.getSettingsForUser(