summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dex2oat/linker/oat_writer.cc2
-rw-r--r--libdexfile/dex/dex_file_loader.cc7
-rw-r--r--libdexfile/dex/dex_file_verifier.cc17
-rw-r--r--libdexfile/dex/dex_file_verifier.h2
-rw-r--r--libdexfile/dex/dex_file_verifier_test.cc55
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));
}