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

Commit 94dacb12 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Fix moving of apps into legacy ASEC.

Derive the correct current volume UUID for comparison, and only
check for cluster style installs when moving from internal storage.

Bug: 22616484
Change-Id: Idb6be2aa4aaa9b9f47ebbeeebd65c15a60d5d164
parent 7469060e
Loading
Loading
Loading
Loading
+18 −10
Original line number Diff line number Diff line
@@ -15813,10 +15813,15 @@ public class PackageManagerService extends IPackageManager.Stub {
                        "Cannot move system application");
            }
            if (Objects.equals(ps.volumeUuid, volumeUuid)) {
                throw new PackageManagerException(MOVE_FAILED_INTERNAL_ERROR,
                        "Package already moved to " + volumeUuid);
            }
            if (pkg.applicationInfo.isExternalAsec()) {
                currentAsec = true;
                currentVolumeUuid = StorageManager.UUID_PRIMARY_PHYSICAL;
            } else if (pkg.applicationInfo.isForwardLocked()) {
                currentAsec = true;
                currentVolumeUuid = "forward_locked";
            } else {
                currentAsec = false;
                currentVolumeUuid = ps.volumeUuid;
                final File probe = new File(pkg.codePath);
                final File probeOat = new File(probe, "oat");
@@ -15824,6 +15829,12 @@ public class PackageManagerService extends IPackageManager.Stub {
                    throw new PackageManagerException(MOVE_FAILED_INTERNAL_ERROR,
                            "Move only supported for modern cluster style installs");
                }
            }
            if (Objects.equals(currentVolumeUuid, volumeUuid)) {
                throw new PackageManagerException(MOVE_FAILED_INTERNAL_ERROR,
                        "Package already moved to " + volumeUuid);
            }
            if (ps.frozen) {
                throw new PackageManagerException(MOVE_FAILED_OPERATION_PENDING,
@@ -15831,9 +15842,6 @@ public class PackageManagerService extends IPackageManager.Stub {
            }
            ps.frozen = true;
            currentAsec = pkg.applicationInfo.isForwardLocked()
                    || pkg.applicationInfo.isExternalAsec();
            currentVolumeUuid = ps.volumeUuid;
            codeFile = new File(pkg.codePath);
            installerPackageName = ps.installerPackageName;
            packageAbiOverride = ps.cpuAbiOverrideString;