Revert "Revert "Full-stack integrity: check vdex contents.""
bug: 30972906
Initial revert due to 'check' file of the test needing updating for target tests.
This reverts commit a19b7649faf8780737be7ce3ec48a12d81c6d69f.
Change-Id: I455780bd88cd89ff80c9084d399e2beeb819b95f
diff --git a/runtime/dex/art_dex_file_loader.cc b/runtime/dex/art_dex_file_loader.cc
index 14386a3..c456764 100644
--- a/runtime/dex/art_dex_file_loader.cc
+++ b/runtime/dex/art_dex_file_loader.cc
@@ -85,7 +85,8 @@
bool ArtDexFileLoader::GetMultiDexChecksums(const char* filename,
std::vector<uint32_t>* checksums,
std::string* error_msg,
- int zip_fd) const {
+ int zip_fd,
+ bool* zip_file_only_contains_uncompressed_dex) const {
CHECK(checksums != nullptr);
uint32_t magic;
@@ -119,7 +120,17 @@
return false;
}
+ if (zip_file_only_contains_uncompressed_dex != nullptr) {
+ // Start by assuming everything is uncompressed.
+ *zip_file_only_contains_uncompressed_dex = true;
+ }
+
do {
+ if (zip_file_only_contains_uncompressed_dex != nullptr) {
+ if (!(zip_entry->IsUncompressed() && zip_entry->IsAlignedToDexHeader())) {
+ *zip_file_only_contains_uncompressed_dex = false;
+ }
+ }
checksums->push_back(zip_entry->GetCrc32());
zip_entry_name = GetMultiDexClassesDexName(i++);
zip_entry.reset(zip_archive->Find(zip_entry_name.c_str(), error_msg));