From 168228a9330e4f6ef14bcfa77681e1640b4df82c Mon Sep 17 00:00:00 2001 From: David Drysdale Date: Tue, 5 Oct 2021 08:43:52 +0100 Subject: [PATCH] KeyMint VTS: don't crash on invalid patchlevel If vendor/boot patchlevel is shorter than the expected YYYYMMDD format, fail properly rather than crashing the VTS test process. Bug: 201946955 Test: VtsAidlKeyMintTargetTest Change-Id: Icf3541e1b76675871672edec8590ec1821770acf --- .../keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp b/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp index fb720e8f46..37acfa9032 100644 --- a/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp +++ b/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp @@ -1365,11 +1365,16 @@ bool verify_attestation_record(const string& challenge, // att_hw_enforced[i].tag == TAG_VENDOR_PATCHLEVEL) { std::string date = std::to_string(att_hw_enforced[i].value.get()); + // strptime seems to require delimiters, but the tag value will // be YYYYMMDD + if (date.size() != 8) { + ADD_FAILURE() << "Tag " << att_hw_enforced[i].tag + << " with invalid format (not YYYYMMDD): " << date; + return false; + } date.insert(6, "-"); date.insert(4, "-"); - EXPECT_EQ(date.size(), 10); struct tm time; strptime(date.c_str(), "%Y-%m-%d", &time);