Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 22dad592 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change I6cae32c7 into eclair

* changes:
  When upgrading packages with shared user ids make sure we are eliminating the package about to be deleted or upgraded when updating permissions associated with the shared user. Include a simple null check when retrieving the permission.
parents 5eb80efb d83006cb
Loading
Loading
Loading
Loading
+12 −14
Original line number Diff line number Diff line
@@ -201,11 +201,11 @@ public class PackageParser {
                    }
                    pi.activities = new ActivityInfo[num];
                }
                for (int i=0; i<N; i++) {
                for (int i=0, j=0; i<N; i++) {
                    final Activity activity = p.activities.get(i);
                    if (activity.info.enabled
                        || (flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) {
                        pi.activities[i] = generateActivityInfo(p.activities.get(i), flags);
                        pi.activities[j++] = generateActivityInfo(p.activities.get(i), flags);
                    }
                }
            }
@@ -222,11 +222,11 @@ public class PackageParser {
                    }
                    pi.receivers = new ActivityInfo[num];
                }
                for (int i=0; i<N; i++) {
                for (int i=0, j=0; i<N; i++) {
                    final Activity activity = p.receivers.get(i);
                    if (activity.info.enabled
                        || (flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) {
                        pi.receivers[i] = generateActivityInfo(p.receivers.get(i), flags);
                        pi.receivers[j++] = generateActivityInfo(p.receivers.get(i), flags);
                    }
                }
            }
@@ -243,11 +243,11 @@ public class PackageParser {
                    }
                    pi.services = new ServiceInfo[num];
                }
                for (int i=0; i<N; i++) {
                for (int i=0, j=0; i<N; i++) {
                    final Service service = p.services.get(i);
                    if (service.info.enabled
                        || (flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) {
                        pi.services[i] = generateServiceInfo(p.services.get(i), flags);
                        pi.services[j++] = generateServiceInfo(p.services.get(i), flags);
                    }
                }
            }
@@ -264,11 +264,11 @@ public class PackageParser {
                    }
                    pi.providers = new ProviderInfo[num];
                }
                for (int i=0; i<N; i++) {
                for (int i=0, j=0; i<N; i++) {
                    final Provider provider = p.providers.get(i);
                    if (provider.info.enabled
                        || (flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) {
                        pi.providers[i] = generateProviderInfo(p.providers.get(i), flags);
                        pi.providers[j++] = generateProviderInfo(p.providers.get(i), flags);
                    }
                }
            }
@@ -300,14 +300,12 @@ public class PackageParser {
            }
        }
        if ((flags&PackageManager.GET_SIGNATURES) != 0) {
            if (p.mSignatures != null) {
                int N = p.mSignatures.length;
           int N = (p.mSignatures != null) ? p.mSignatures.length : 0;
           if (N > 0) {
                pi.signatures = new Signature[N];
                System.arraycopy(p.mSignatures, 0, pi.signatures, 0, N);
            }
        }
        }
        return pi;
    }

+6 −2
Original line number Diff line number Diff line
@@ -6344,7 +6344,9 @@ class PackageManagerService extends IPackageManager.Stub {
                    continue;
                }
                for (PackageSetting pkg:sus.packages) {
                    if (pkg.pkg.requestedPermissions.contains(eachPerm)) {
                    if (pkg.pkg != null &&
                            !pkg.pkg.packageName.equalsIgnoreCase(deletedPs.pkg.packageName) &&
                            pkg.pkg.requestedPermissions.contains(eachPerm)) {
                        used = true;
                        break;
                    }
@@ -6359,8 +6361,10 @@ class PackageManagerService extends IPackageManager.Stub {
            int newGids[] = globalGids;
            for (String eachPerm : sus.grantedPermissions) {
                BasePermission bp = mPermissions.get(eachPerm);
                if (bp != null) {
                    newGids = appendInts(newGids, bp.gids);
                }
            }
            sus.gids = newGids;
        }