Skip to content

Commit 3ed62ad

Browse files
rich canningsAndroid (Google) Code Review
authored andcommitted
Merge "Fix package verification with multi-user" into jb-mr1-dev
2 parents 970a494 + d55deb0 commit 3ed62ad

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

services/java/com/android/server/pm/PackageManagerService.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -851,15 +851,17 @@ void doHandleMessage(Message msg) {
851851
state.setVerifierResponse(Binder.getCallingUid(),
852852
PackageManager.VERIFICATION_ALLOW_WITHOUT_SUFFICIENT);
853853
broadcastPackageVerified(verificationId, args.packageURI,
854-
PackageManager.VERIFICATION_ALLOW);
854+
PackageManager.VERIFICATION_ALLOW,
855+
state.getInstallArgs().getUser());
855856
try {
856857
ret = args.copyApk(mContainerService, true);
857858
} catch (RemoteException e) {
858859
Slog.e(TAG, "Could not contact the ContainerService");
859860
}
860861
} else {
861862
broadcastPackageVerified(verificationId, args.packageURI,
862-
PackageManager.VERIFICATION_REJECT);
863+
PackageManager.VERIFICATION_REJECT,
864+
state.getInstallArgs().getUser());
863865
}
864866

865867
processPendingInstall(args, ret);
@@ -889,7 +891,7 @@ void doHandleMessage(Message msg) {
889891
if (state.isInstallAllowed()) {
890892
ret = PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
891893
broadcastPackageVerified(verificationId, args.packageURI,
892-
response.code);
894+
response.code, state.getInstallArgs().getUser());
893895
try {
894896
ret = args.copyApk(mContainerService, true);
895897
} catch (RemoteException e) {
@@ -5741,14 +5743,15 @@ public void extendVerificationTimeout(int id, int verificationCodeAtTimeout,
57415743
}
57425744

57435745
private void broadcastPackageVerified(int verificationId, Uri packageUri,
5744-
int verificationCode) {
5746+
int verificationCode, UserHandle user) {
57455747
final Intent intent = new Intent(Intent.ACTION_PACKAGE_VERIFIED);
57465748
intent.setDataAndType(packageUri, PACKAGE_MIME_TYPE);
57475749
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
57485750
intent.putExtra(PackageManager.EXTRA_VERIFICATION_ID, verificationId);
57495751
intent.putExtra(PackageManager.EXTRA_VERIFICATION_RESULT, verificationCode);
57505752

5751-
mContext.sendBroadcast(intent, android.Manifest.permission.PACKAGE_VERIFICATION_AGENT);
5753+
mContext.sendBroadcastAsUser(intent, user,
5754+
android.Manifest.permission.PACKAGE_VERIFICATION_AGENT);
57525755
}
57535756

57545757
private ComponentName matchComponentForVerifier(String packageName,
@@ -6477,7 +6480,7 @@ public void handleStartCopy() throws RemoteException {
64776480
final Intent sufficientIntent = new Intent(verification);
64786481
sufficientIntent.setComponent(verifierComponent);
64796482

6480-
mContext.sendBroadcast(sufficientIntent);
6483+
mContext.sendBroadcastAsUser(sufficientIntent, getUser());
64816484
}
64826485
}
64836486
}
@@ -6492,7 +6495,7 @@ public void handleStartCopy() throws RemoteException {
64926495
* target BroadcastReceivers have run.
64936496
*/
64946497
verification.setComponent(requiredVerifierComponent);
6495-
mContext.sendOrderedBroadcast(verification,
6498+
mContext.sendOrderedBroadcastAsUser(verification, getUser(),
64966499
android.Manifest.permission.PACKAGE_VERIFICATION_AGENT,
64976500
new BroadcastReceiver() {
64986501
@Override
@@ -6779,6 +6782,10 @@ int doPostCopy(int uid) {
67796782
protected boolean isFwdLocked() {
67806783
return (flags & PackageManager.INSTALL_FORWARD_LOCK) != 0;
67816784
}
6785+
6786+
UserHandle getUser() {
6787+
return user;
6788+
}
67826789
}
67836790

67846791
class FileInstallArgs extends InstallArgs {

0 commit comments

Comments
 (0)