summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Maltsev <pavelm@google.com>2019-12-13 11:47:21 -0800
committerPavel Maltsev <pavelm@google.com>2019-12-13 14:29:06 -0800
commit068713f60c377f87980f1d6fca5f3fe8e748d174 (patch)
tree34a7af69ab59fb8b7f49f18e17e87ae1b6b3e84a
parent05bc7cc4a1e20d5e4fcb4d2c685910577007851c (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
-rw-r--r--services/usb/java/com/android/server/usb/UsbSerialReader.java4
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");
}