old paths contains all entries when updating

In certains circumstances, only the base and split APKs were included in
the "old paths" list when updating the application info. Instead, this
list should contain _all_ elements, including any additional libraries
that may be added to the overall classpath.

Bug: 77342775
Test: Manual. Install a package. Install a split with --dont_kill. See that the path doesn't contain duplicate entries
Change-Id: Id9739cce215ab07bff1b17966583c0cf51a0b34a
This commit is contained in:
Todd Kennedy
2018-05-02 10:59:45 +01:00
parent 39bd79258d
commit b9656a93aa
3 changed files with 2 additions and 20 deletions

View File

@@ -5333,8 +5333,8 @@ public final class ActivityThread extends ClientTransactionHandler {
}
}
}
final List<String> oldPaths =
sPackageManager.getPreviousCodePaths(packageName);
final ArrayList<String> oldPaths = new ArrayList<>();
LoadedApk.makePaths(this, pkgInfo.getApplicationInfo(), oldPaths);
pkgInfo.updateApplicationInfo(aInfo, oldPaths);
} catch (RemoteException e) {
}

View File

@@ -644,8 +644,6 @@ interface IPackageManager {
boolean isPackageDeviceAdminOnAnyUser(String packageName);
List<String> getPreviousCodePaths(in String packageName);
int getInstallReason(String packageName, int userId);
ParceledListSlice getSharedLibraries(in String packageName, int flags, int userId);

View File

@@ -16403,22 +16403,6 @@ public class PackageManagerService extends IPackageManager.Stub
}
}
@Override
public List<String> getPreviousCodePaths(String packageName) {
final int callingUid = Binder.getCallingUid();
final List<String> result = new ArrayList<>();
if (getInstantAppPackageName(callingUid) != null) {
return result;
}
final PackageSetting ps = mSettings.mPackages.get(packageName);
if (ps != null
&& ps.oldCodePaths != null
&& !filterAppAccessLPr(ps, callingUid, UserHandle.getUserId(callingUid))) {
result.addAll(ps.oldCodePaths);
}
return result;
}
private void replaceNonSystemPackageLIF(PackageParser.Package deletedPackage,
PackageParser.Package pkg, final @ParseFlags int parseFlags,
final @ScanFlags int scanFlags, UserHandle user, int[] allUsers,