diff options
author | Pavel Maltsev <pavelm@google.com> | 2019-12-13 11:47:21 -0800 |
---|---|---|
committer | Pavel Maltsev <pavelm@google.com> | 2019-12-13 14:29:06 -0800 |
commit | 068713f60c377f87980f1d6fca5f3fe8e748d174 (patch) | |
tree | 34a7af69ab59fb8b7f49f18e17e87ae1b6b3e84a /services/usb | |
parent | 05bc7cc4a1e20d5e4fcb4d2c685910577007851c (diff) |
Fix UsbSerialReder for multi-user
When UsbSerialReader checks for package it needs to request package for
the calling user, because UsbSerialReader runs in system_proccess under
u0 and the calling package may not be installed for that user.
Fixes: 146079090
Test: flash and verify that UsbDevice#getSerial() returns correct string
(used to return null before the fix)
Change-Id: I637673165dd364f4728e587a59897184ea5b5620
Diffstat (limited to 'services/usb')
-rw-r--r-- | services/usb/java/com/android/server/usb/UsbSerialReader.java | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/services/usb/java/com/android/server/usb/UsbSerialReader.java b/services/usb/java/com/android/server/usb/UsbSerialReader.java index 86016bb6036f..095e8e9b7b5b 100644 --- a/services/usb/java/com/android/server/usb/UsbSerialReader.java +++ b/services/usb/java/com/android/server/usb/UsbSerialReader.java @@ -75,12 +75,14 @@ class UsbSerialReader extends IUsbSerialReader.Stub { if (uid != Process.SYSTEM_UID) { enforcePackageBelongsToUid(uid, packageName); + UserHandle user = Binder.getCallingUserHandle(); int packageTargetSdkVersion; long token = Binder.clearCallingIdentity(); try { PackageInfo pkg; try { - pkg = mContext.getPackageManager().getPackageInfo(packageName, 0); + pkg = mContext.getPackageManager() + .getPackageInfoAsUser(packageName, 0, user.getIdentifier()); } catch (PackageManager.NameNotFoundException e) { throw new RemoteException("package " + packageName + " cannot be found"); } |