summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTao Bao <tbao@google.com>2017-03-28 01:04:50 +0200
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-03-28 01:04:51 +0200
commit055703e26a70b2b90e6d1f2c50ebf352555048c1 (patch)
tree4e53839748164c9ae529f5daf97452af5ac6953b
parentMerge "Revert "libbootloader_message: use different fstab paths for normal/recovery boot"" am: 27c3e47853 am: b0e768e269 (diff)
parenttests: Construct signature-boundary.zip at runtime. (diff)
downloadandroid_bootable_recovery-055703e26a70b2b90e6d1f2c50ebf352555048c1.tar
android_bootable_recovery-055703e26a70b2b90e6d1f2c50ebf352555048c1.tar.gz
android_bootable_recovery-055703e26a70b2b90e6d1f2c50ebf352555048c1.tar.bz2
android_bootable_recovery-055703e26a70b2b90e6d1f2c50ebf352555048c1.tar.lz
android_bootable_recovery-055703e26a70b2b90e6d1f2c50ebf352555048c1.tar.xz
android_bootable_recovery-055703e26a70b2b90e6d1f2c50ebf352555048c1.tar.zst
android_bootable_recovery-055703e26a70b2b90e6d1f2c50ebf352555048c1.zip
-rw-r--r--tests/component/verifier_test.cpp20
-rw-r--r--tests/testdata/signature-boundary.zipbin22 -> 0 bytes
2 files changed, 18 insertions, 2 deletions
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<std::vector<std::string>> {
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<Certificate> 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<const unsigned char*>(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<std::string>({"random.zip", "v1"}),
std::vector<std::string>({"fake-eocd.zip", "v1"}),
std::vector<std::string>({"alter-metadata.zip", "v1"}),
- std::vector<std::string>({"alter-footer.zip", "v1"}),
- std::vector<std::string>({"signature-boundary.zip", "v1"})));
+ std::vector<std::string>({"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
--- a/tests/testdata/signature-boundary.zip
+++ /dev/null
Binary files differ