Obtain file length using delegated call to shell.
This also in-line with how non-streaming installation work. Bug: 161805941 Test: Try to install .apk from /sdcard in SELinux permissive mode. Change-Id: Id30c7ff43f1613f8073883df429e47f16e2617c3
This commit is contained in:
@@ -3199,12 +3199,24 @@ class PackageManagerShellCommand extends ShellCommand {
|
||||
return 0;
|
||||
}
|
||||
|
||||
private long getFileStatSize(File file) {
|
||||
final ParcelFileDescriptor pfd = openFileForSystem(file.getPath(), "r");
|
||||
if (pfd == null) {
|
||||
throw new IllegalArgumentException("Error: Can't open file: " + file.getPath());
|
||||
}
|
||||
try {
|
||||
return pfd.getStatSize();
|
||||
} finally {
|
||||
IoUtils.closeQuietly(pfd);
|
||||
}
|
||||
}
|
||||
|
||||
private void processArgForLocalFile(String arg, PackageInstaller.Session session) {
|
||||
final String inPath = arg;
|
||||
|
||||
final File file = new File(inPath);
|
||||
final String name = file.getName();
|
||||
final long size = file.length();
|
||||
final long size = getFileStatSize(file);
|
||||
final Metadata metadata = Metadata.forLocalFile(inPath);
|
||||
|
||||
byte[] v4signatureBytes = null;
|
||||
|
||||
Reference in New Issue
Block a user