From 056e2da6790a5111039ef2e1310ad781107f80d4 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Sun, 26 Mar 2017 23:25:11 -0700 Subject: tests: Construct signature-boundary.zip at runtime. Test: Observe the same failure with recovery_component_test ("signature start: 65535 is larger than comment size: 0"). Change-Id: I98c357b5df2fa4caa9d8eed63af2e945ed99f18a --- tests/component/verifier_test.cpp | 20 ++++++++++++++++++-- tests/testdata/signature-boundary.zip | Bin 22 -> 0 bytes 2 files changed, 18 insertions(+), 2 deletions(-) delete mode 100644 tests/testdata/signature-boundary.zip (limited to 'tests') diff --git a/tests/component/verifier_test.cpp b/tests/component/verifier_test.cpp index 4993716f4..4c0648714 100644 --- a/tests/component/verifier_test.cpp +++ b/tests/component/verifier_test.cpp @@ -33,6 +33,8 @@ #include "otautil/SysUtil.h" #include "verifier.h" +using namespace std::string_literals; + class VerifierTest : public testing::TestWithParam> { protected: void SetUp() override { @@ -115,6 +117,21 @@ TEST(VerifierTest, load_keys_invalid_keys) { ASSERT_FALSE(load_keys(key_file5.path, certs)); } +TEST(VerifierTest, BadPackage_SignatureStartOutOfBounds) { + std::string testkey_v3; + ASSERT_TRUE(android::base::ReadFileToString(from_testdata_base("testkey_v3.txt"), &testkey_v3)); + + TemporaryFile key_file; + ASSERT_TRUE(android::base::WriteStringToFile(testkey_v3, key_file.path)); + std::vector certs; + ASSERT_TRUE(load_keys(key_file.path, certs)); + + // Signature start is 65535 (0xffff) while comment size is 0 (Bug: 31914369). + std::string package = "\x50\x4b\x05\x06"s + std::string(12, '\0') + "\xff\xff\xff\xff\x00\x00"s; + ASSERT_EQ(VERIFY_FAILURE, verify_file(reinterpret_cast(package.data()), + package.size(), certs)); +} + TEST_P(VerifierSuccessTest, VerifySucceed) { ASSERT_EQ(verify_file(memmap.addr, memmap.length, certs, nullptr), VERIFY_SUCCESS); } @@ -159,5 +176,4 @@ INSTANTIATE_TEST_CASE_P(BadPackage, VerifierFailureTest, std::vector({"random.zip", "v1"}), std::vector({"fake-eocd.zip", "v1"}), std::vector({"alter-metadata.zip", "v1"}), - std::vector({"alter-footer.zip", "v1"}), - std::vector({"signature-boundary.zip", "v1"}))); + std::vector({"alter-footer.zip", "v1"}))); diff --git a/tests/testdata/signature-boundary.zip b/tests/testdata/signature-boundary.zip deleted file mode 100644 index 64a3cfa15..000000000 Binary files a/tests/testdata/signature-boundary.zip and /dev/null differ -- cgit v1.2.3