diff options
| -rw-r--r-- | services/usb/java/com/android/server/usb/UsbSerialReader.java | 17 |
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( |