summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Carlstrom <bdc@google.com>2013-09-03 11:51:42 -0700
committerBrian Carlstrom <bdc@google.com>2013-09-03 11:54:54 -0700
commit179486aee731f734207873244542993ed4bcff21 (patch)
tree8a4c9c5d0f518844584a991269e5571fd50bae01
parent144a1397d09af54c0d098b7c2254e4d04bbddf9b (diff)
downloadart-179486aee731f734207873244542993ed4bcff21.zip
art-179486aee731f734207873244542993ed4bcff21.tar.gz
art-179486aee731f734207873244542993ed4bcff21.tar.bz2
Fix ImageHeader.IsValid
Change-Id: Ia56f4ded63a726a416225bf4a536175aa435866e
-rw-r--r--compiler/image_test.cc30
-rw-r--r--runtime/image.h4
2 files changed, 32 insertions, 2 deletions
diff --git a/compiler/image_test.cc b/compiler/image_test.cc
index 60bc3cc..08c32c2 100644
--- a/compiler/image_test.cc
+++ b/compiler/image_test.cc
@@ -159,4 +159,34 @@ TEST_F(ImageTest, WriteRead) {
}
}
+TEST_F(ImageTest, ImageHeaderIsValid) {
+ uint32_t image_begin = ART_BASE_ADDRESS;
+ uint32_t image_size_ = 16 * KB;
+ uint32_t image_bitmap_offset = 0;
+ uint32_t image_bitmap_size = 0;
+ uint32_t image_roots = ART_BASE_ADDRESS + (1 * KB);
+ uint32_t oat_checksum = 0;
+ uint32_t oat_file_begin = ART_BASE_ADDRESS + (4 * KB); // page aligned
+ uint32_t oat_data_begin = ART_BASE_ADDRESS + (8 * KB); // page aligned
+ uint32_t oat_data_end = ART_BASE_ADDRESS + (9 * KB);
+ uint32_t oat_file_end = ART_BASE_ADDRESS + (10 * KB);
+ ImageHeader image_header(image_begin,
+ image_size_,
+ image_bitmap_offset,
+ image_bitmap_size,
+ image_roots,
+ oat_checksum,
+ oat_file_begin,
+ oat_data_begin,
+ oat_data_end,
+ oat_file_end);
+ ASSERT_TRUE(image_header.IsValid());
+
+ char* magic = const_cast<char*>(image_header.GetMagic());
+ strcpy(magic, ""); // bad magic
+ ASSERT_FALSE(image_header.IsValid());
+ strcpy(magic, "art\n000"); // bad version
+ ASSERT_FALSE(image_header.IsValid());
+}
+
} // namespace art
diff --git a/runtime/image.h b/runtime/image.h
index 5119e3a..0e0a90a 100644
--- a/runtime/image.h
+++ b/runtime/image.h
@@ -42,10 +42,10 @@ class PACKED(4) ImageHeader {
uint32_t oat_file_end);
bool IsValid() const {
- if (memcmp(magic_, kImageMagic, sizeof(kImageMagic) != 0)) {
+ if (memcmp(magic_, kImageMagic, sizeof(kImageMagic)) != 0) {
return false;
}
- if (memcmp(version_, kImageVersion, sizeof(kImageVersion) != 0)) {
+ if (memcmp(version_, kImageVersion, sizeof(kImageVersion)) != 0) {
return false;
}
return true;