Stop marking apps as privileged if they are not signed properly.

Fixes: 311374917
Test: atest android.content.pm.cts.PackageManagerTest
Change-Id: I5b5b81cf43b06837a22c8dfd170a112106dd64c1
Merged-In: I5b5b81cf43b06837a22c8dfd170a112106dd64c1
(cherry picked from commit 3ee5dfdcba047051ce81dca0696d6ddfeafe2d98)
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index a56ac9d..0ec7023 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -4373,7 +4373,9 @@
 
     private void assertPackageWithSharedUserIdIsPrivileged(AndroidPackage pkg)
             throws PackageManagerException {
-        if (!pkg.isPrivileged() && (pkg.getSharedUserId() != null)) {
+        if (!pkg.isPrivileged()
+                && (pkg.getSharedUserId() != null)
+                && !pkg.isLeavingSharedUid()) {
             SharedUserSetting sharedUserSetting = null;
             try {
                 sharedUserSetting = mPm.mSettings.getSharedUserLPw(pkg.getSharedUserId(),
@@ -4407,7 +4409,8 @@
         if (((scanFlags & SCAN_AS_PRIVILEGED) == 0)
                 && !pkg.isPrivileged()
                 && (pkg.getSharedUserId() != null)
-                && !skipVendorPrivilegeScan) {
+                && !skipVendorPrivilegeScan
+                && !pkg.isLeavingSharedUid()) {
             SharedUserSetting sharedUserSetting = null;
             synchronized (mPm.mLock) {
                 try {