AU: Include old kernel hash for source partition verification.
The hash is included (and, consequently, check by the client) only if a true
delta kernel update is generated.
BUG=7705
TEST=unit tests, generated delta and installed on device
Change-Id: I4483a176b177f3068d699dc962255c92ca601156
Review URL: http://codereview.chromium.org/3762007
diff --git a/delta_performer_unittest.cc b/delta_performer_unittest.cc
index 5a48441..e9d44fa 100755
--- a/delta_performer_unittest.cc
+++ b/delta_performer_unittest.cc
@@ -258,9 +258,12 @@
EXPECT_EQ(expected_sig_data_length, manifest.signatures_size());
EXPECT_FALSE(signature.data().empty());
- // TODO(petkov): Add a test once the generator start sending old kernel
- // info.
- EXPECT_FALSE(manifest.has_old_kernel_info());
+ if (full_kernel) {
+ EXPECT_FALSE(manifest.has_old_kernel_info());
+ } else {
+ EXPECT_EQ(old_kernel_data.size(), manifest.old_kernel_info().size());
+ EXPECT_FALSE(manifest.old_kernel_info().hash().empty());
+ }
EXPECT_EQ(new_kernel_data.size(), manifest.new_kernel_info().size());
EXPECT_EQ(image_size, manifest.old_rootfs_info().size());
@@ -288,14 +291,20 @@
// Update the A image in place.
DeltaPerformer performer(&prefs);
+ vector<char> rootfs_hash;
+ EXPECT_EQ(image_size,
+ OmahaHashCalculator::RawHashOfFile(a_img,
+ image_size,
+ &rootfs_hash));
+ performer.set_current_rootfs_hash(&rootfs_hash);
+ vector<char> kernel_hash;
+ EXPECT_TRUE(OmahaHashCalculator::RawHashOfData(old_kernel_data,
+ &kernel_hash));
+ performer.set_current_kernel_hash(&kernel_hash);
+
EXPECT_EQ(0, performer.Open(a_img.c_str(), 0, 0));
EXPECT_TRUE(performer.OpenKernel(old_kernel.c_str()));
- vector<char> rootfs_hash;
- CHECK_EQ(image_size,
- OmahaHashCalculator::RawHashOfFile(a_img, image_size, &rootfs_hash));
- performer.set_current_rootfs_hash(&rootfs_hash);
-
// Write at some number of bytes per operation. Arbitrarily chose 5.
const size_t kBytesPerWrite = 5;
for (size_t i = 0; i < delta.size(); i += kBytesPerWrite) {