Merge "PackageManager: Fix reference profile canonicalization." into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9f33e5cccc
@@ -328,10 +328,11 @@ class PackageDexOptimizer {
|
||||
|
||||
for (String apkPath : pkg.getAllCodePathsExcludingResourceOnly()) {
|
||||
try {
|
||||
apkPath = new File(apkPath).getCanonicalPath();
|
||||
apkPath = PackageManagerServiceUtils.realpath(new File(apkPath));
|
||||
} catch (IOException e) {
|
||||
// Log an error but continue without it.
|
||||
Slog.w(TAG, "Failed to get canonical path", e);
|
||||
continue;
|
||||
}
|
||||
String useMarker = apkPath.replace('/', '@');
|
||||
final int[] currentUserIds = UserManagerService.getInstance().getUserIds();
|
||||
|
||||
@@ -7603,10 +7603,11 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
|
||||
for (String path : pkg.getAllCodePathsExcludingResourceOnly()) {
|
||||
try {
|
||||
path = new File(path).getCanonicalPath();
|
||||
path = PackageManagerServiceUtils.realpath(new File(path));
|
||||
} catch (IOException e) {
|
||||
// TODO: Should we return early here ?
|
||||
Slog.w(TAG, "Failed to get canonical path", e);
|
||||
continue;
|
||||
}
|
||||
|
||||
final String useMarker = path.replace('/', '@');
|
||||
|
||||
@@ -25,9 +25,13 @@ import android.content.pm.PackageParser;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
import android.system.ErrnoException;
|
||||
import android.util.ArraySet;
|
||||
import android.util.Log;
|
||||
import libcore.io.Libcore;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
@@ -163,4 +167,16 @@ public class PackageManagerServiceUtils {
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the canonicalized path of {@code path} as per {@code realpath(3)}
|
||||
* semantics.
|
||||
*/
|
||||
public static String realpath(File path) throws IOException {
|
||||
try {
|
||||
return Libcore.os.realpath(path.getAbsolutePath());
|
||||
} catch (ErrnoException ee) {
|
||||
throw ee.rethrowAsIOException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user