Loading tools/zipalign/ZipFile.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -530,7 +530,7 @@ status_t ZipFile::alignEntry(android::ZipEntry* pEntry, uint32_t alignTo){ // If the alignment is not what was requested, add some padding in the extra // so the payload ends up where is requested. uint64_t alignDiff = alignTo - (expectedPayloadOffset % alignTo); if (alignDiff == 0) if (alignDiff == alignTo) return OK; return pEntry->addPadding(alignDiff); Loading tools/zipalign/tests/src/align_test.cpp +29 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ #include <android-base/file.h> using namespace android; using namespace base; static std::string GetTestPath(const std::string& filename) { static std::string test_data_dir = android::base::GetExecutableDirectory() + "/tests/data/"; Loading @@ -26,6 +27,34 @@ TEST(Align, Unaligned) { ASSERT_EQ(0, verified); } TEST(Align, DoubleAligment) { const std::string src = GetTestPath("unaligned.zip"); const std::string tmp = GetTestPath("da_aligned.zip"); const std::string dst = GetTestPath("da_d_aligner.zip"); int processed = process(src.c_str(), tmp.c_str(), 4, true, false, 4096); ASSERT_EQ(0, processed); int verified = verify(tmp.c_str(), 4, true, false); ASSERT_EQ(0, verified); // Align the result of the previous run. Essentially double aligning. processed = process(tmp.c_str(), dst.c_str(), 4, true, false, 4096); ASSERT_EQ(0, processed); verified = verify(dst.c_str(), 4, true, false); ASSERT_EQ(0, verified); // Nothing should have changed between tmp and dst. std::string tmp_content; ASSERT_EQ(true, ReadFileToString(tmp, &tmp_content)); std::string dst_content; ASSERT_EQ(true, ReadFileToString(dst, &dst_content)); ASSERT_EQ(tmp_content, dst_content); } // Align a zip featuring a hole at the beginning. The // hole in the archive is a delete entry in the Central // Directory. Loading Loading
tools/zipalign/ZipFile.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -530,7 +530,7 @@ status_t ZipFile::alignEntry(android::ZipEntry* pEntry, uint32_t alignTo){ // If the alignment is not what was requested, add some padding in the extra // so the payload ends up where is requested. uint64_t alignDiff = alignTo - (expectedPayloadOffset % alignTo); if (alignDiff == 0) if (alignDiff == alignTo) return OK; return pEntry->addPadding(alignDiff); Loading
tools/zipalign/tests/src/align_test.cpp +29 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ #include <android-base/file.h> using namespace android; using namespace base; static std::string GetTestPath(const std::string& filename) { static std::string test_data_dir = android::base::GetExecutableDirectory() + "/tests/data/"; Loading @@ -26,6 +27,34 @@ TEST(Align, Unaligned) { ASSERT_EQ(0, verified); } TEST(Align, DoubleAligment) { const std::string src = GetTestPath("unaligned.zip"); const std::string tmp = GetTestPath("da_aligned.zip"); const std::string dst = GetTestPath("da_d_aligner.zip"); int processed = process(src.c_str(), tmp.c_str(), 4, true, false, 4096); ASSERT_EQ(0, processed); int verified = verify(tmp.c_str(), 4, true, false); ASSERT_EQ(0, verified); // Align the result of the previous run. Essentially double aligning. processed = process(tmp.c_str(), dst.c_str(), 4, true, false, 4096); ASSERT_EQ(0, processed); verified = verify(dst.c_str(), 4, true, false); ASSERT_EQ(0, verified); // Nothing should have changed between tmp and dst. std::string tmp_content; ASSERT_EQ(true, ReadFileToString(tmp, &tmp_content)); std::string dst_content; ASSERT_EQ(true, ReadFileToString(dst, &dst_content)); ASSERT_EQ(tmp_content, dst_content); } // Align a zip featuring a hole at the beginning. The // hole in the archive is a delete entry in the Central // Directory. Loading