diff options
-rw-r--r-- | dex2oat/linker/oat_writer.cc | 2 | ||||
-rw-r--r-- | libdexfile/dex/dex_file_loader.cc | 7 | ||||
-rw-r--r-- | libdexfile/dex/dex_file_verifier.cc | 17 | ||||
-rw-r--r-- | libdexfile/dex/dex_file_verifier.h | 2 | ||||
-rw-r--r-- | libdexfile/dex/dex_file_verifier_test.cc | 55 |
5 files changed, 19 insertions, 64 deletions
diff --git a/dex2oat/linker/oat_writer.cc b/dex2oat/linker/oat_writer.cc index c2fa67e09a..7c188b52de 100644 --- a/dex2oat/linker/oat_writer.cc +++ b/dex2oat/linker/oat_writer.cc @@ -3201,8 +3201,6 @@ bool OatWriter::WriteDexFiles(File* file, const DexFile* dex_file = oat_dex_file.GetDexFile(); std::string error_msg; if (!dex::Verify(dex_file, - dex_file->Begin(), - dex_file->Size(), dex_file->GetLocation().c_str(), /*verify_checksum=*/true, &error_msg)) { diff --git a/libdexfile/dex/dex_file_loader.cc b/libdexfile/dex/dex_file_loader.cc index 5d5cd4ccbe..bd5863aec4 100644 --- a/libdexfile/dex/dex_file_loader.cc +++ b/libdexfile/dex/dex_file_loader.cc @@ -380,12 +380,7 @@ std::unique_ptr<DexFile> DexFileLoader::OpenCommon( // NB: Dex verifier does not understand the compact dex format. if (verify && !dex_file->IsCompactDexFile()) { ScopedTrace trace(std::string("Verify dex file ") + location); - if (!dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), - location.c_str(), - verify_checksum, - error_msg)) { + if (!dex::Verify(dex_file.get(), location.c_str(), verify_checksum, error_msg)) { if (error_code != nullptr) { *error_code = DexFileLoaderErrorCode::kVerifyError; } diff --git a/libdexfile/dex/dex_file_verifier.cc b/libdexfile/dex/dex_file_verifier.cc index ec415aca31..45f7f8f00d 100644 --- a/libdexfile/dex/dex_file_verifier.cc +++ b/libdexfile/dex/dex_file_verifier.cc @@ -191,14 +191,10 @@ std::string GetMethodDescription(const uint8_t* const begin, class DexFileVerifier { public: - DexFileVerifier(const DexFile* dex_file, - const uint8_t* begin, - size_t size, - const char* location, - bool verify_checksum) + DexFileVerifier(const DexFile* dex_file, const char* location, bool verify_checksum) : dex_file_(dex_file), - begin_(begin), - size_(size), + begin_(dex_file->Begin()), + size_(dex_file->Size()), location_(location), verify_checksum_(verify_checksum), header_(&dex_file->GetHeader()), @@ -207,8 +203,7 @@ class DexFileVerifier { init_indices_{std::numeric_limits<size_t>::max(), std::numeric_limits<size_t>::max(), std::numeric_limits<size_t>::max(), - std::numeric_limits<size_t>::max()} { - } + std::numeric_limits<size_t>::max()} {} bool Verify(); @@ -3679,13 +3674,11 @@ bool DexFileVerifier::CheckConstructorProperties( } bool Verify(const DexFile* dex_file, - const uint8_t* begin, - size_t size, const char* location, bool verify_checksum, std::string* error_msg) { std::unique_ptr<DexFileVerifier> verifier( - new DexFileVerifier(dex_file, begin, size, location, verify_checksum)); + new DexFileVerifier(dex_file, location, verify_checksum)); if (!verifier->Verify()) { *error_msg = verifier->FailureReason(); return false; diff --git a/libdexfile/dex/dex_file_verifier.h b/libdexfile/dex/dex_file_verifier.h index 8ae6e7a5fd..423a01a80d 100644 --- a/libdexfile/dex/dex_file_verifier.h +++ b/libdexfile/dex/dex_file_verifier.h @@ -28,8 +28,6 @@ class DexFile; namespace dex { bool Verify(const DexFile* dex_file, - const uint8_t* begin, - size_t size, const char* location, bool verify_checksum, std::string* error_msg); diff --git a/libdexfile/dex/dex_file_verifier_test.cc b/libdexfile/dex/dex_file_verifier_test.cc index b5e7a0f3e7..d31635ef05 100644 --- a/libdexfile/dex/dex_file_verifier_test.cc +++ b/libdexfile/dex/dex_file_verifier_test.cc @@ -77,12 +77,7 @@ class DexFileVerifierTest : public testing::Test { static constexpr bool kVerifyChecksum = true; std::string error_msg; - bool success = dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), - location, - kVerifyChecksum, - &error_msg); + bool success = dex::Verify(dex_file.get(), location, kVerifyChecksum, &error_msg); if (expected_error == nullptr) { EXPECT_TRUE(success) << error_msg; } else { @@ -1618,16 +1613,12 @@ TEST_F(DexFileVerifierTest, Checksum) { // Good checksum: all pass. EXPECT_TRUE(dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), "good checksum, no verify", - /*verify_checksum=*/ false, + /*verify_checksum=*/false, &error_msg)); EXPECT_TRUE(dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), "good checksum, verify", - /*verify_checksum=*/ true, + /*verify_checksum=*/true, &error_msg)); // Bad checksum: !verify_checksum passes verify_checksum fails. @@ -1635,16 +1626,12 @@ TEST_F(DexFileVerifierTest, Checksum) { const_cast<uint8_t*>(dex_file->Begin())); header->checksum_ = 0; EXPECT_TRUE(dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), "bad checksum, no verify", - /*verify_checksum=*/ false, + /*verify_checksum=*/false, &error_msg)); EXPECT_FALSE(dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), "bad checksum, verify", - /*verify_checksum=*/ true, + /*verify_checksum=*/true, &error_msg)); EXPECT_NE(error_msg.find("Bad checksum"), std::string::npos) << error_msg; } @@ -1688,10 +1675,8 @@ TEST_F(DexFileVerifierTest, BadStaticMethodName) { std::unique_ptr<DexFile> dex_file(GetDexFile(dex_bytes.get(), length)); std::string error_msg; EXPECT_FALSE(dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), "bad static method name", - /*verify_checksum=*/ true, + /*verify_checksum=*/true, &error_msg)); } @@ -1732,10 +1717,8 @@ TEST_F(DexFileVerifierTest, BadVirtualMethodName) { std::unique_ptr<DexFile> dex_file(GetDexFile(dex_bytes.get(), length)); std::string error_msg; EXPECT_FALSE(dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), "bad virtual method name", - /*verify_checksum=*/ true, + /*verify_checksum=*/true, &error_msg)); } @@ -1776,10 +1759,8 @@ TEST_F(DexFileVerifierTest, BadClinitSignature) { std::unique_ptr<DexFile> dex_file(GetDexFile(dex_bytes.get(), length)); std::string error_msg; EXPECT_FALSE(dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), "bad clinit signature", - /*verify_checksum=*/ true, + /*verify_checksum=*/true, &error_msg)); } @@ -1820,10 +1801,8 @@ TEST_F(DexFileVerifierTest, BadClinitSignatureAgain) { std::unique_ptr<DexFile> dex_file(GetDexFile(dex_bytes.get(), length)); std::string error_msg; EXPECT_FALSE(dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), "bad clinit signature", - /*verify_checksum=*/ true, + /*verify_checksum=*/true, &error_msg)); } @@ -1857,10 +1836,8 @@ TEST_F(DexFileVerifierTest, BadInitSignature) { std::unique_ptr<DexFile> dex_file(GetDexFile(dex_bytes.get(), length)); std::string error_msg; EXPECT_FALSE(dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), "bad init signature", - /*verify_checksum=*/ true, + /*verify_checksum=*/true, &error_msg)); } @@ -2060,10 +2037,8 @@ TEST_F(DexFileVerifierTest, InvokeCustomDexSamples) { std::unique_ptr<DexFile> dex_file(GetDexFile(dex_bytes.get(), length)); std::string error_msg; EXPECT_TRUE(dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), "good checksum, verify", - /*verify_checksum=*/ true, + /*verify_checksum=*/true, &error_msg)); // TODO(oth): Test corruptions (b/35308502) } @@ -2107,10 +2082,8 @@ TEST_F(DexFileVerifierTest, BadStaticFieldInitialValuesArray) { std::unique_ptr<DexFile> dex_file(GetDexFile(dex_bytes.get(), length)); std::string error_msg; EXPECT_FALSE(dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), "bad static field initial values array", - /*verify_checksum=*/ true, + /*verify_checksum=*/true, &error_msg)); } @@ -2163,10 +2136,8 @@ TEST_F(DexFileVerifierTest, GoodStaticFieldInitialValuesArray) { std::unique_ptr<DexFile> dex_file(GetDexFile(dex_bytes.get(), length)); std::string error_msg; EXPECT_TRUE(dex::Verify(dex_file.get(), - dex_file->Begin(), - dex_file->Size(), "good static field initial values array", - /*verify_checksum=*/ true, + /*verify_checksum=*/true, &error_msg)); } |