identity: Don't pass invalid profileIds in VTS test.

Also add a check in the default implementation to help catch bugs like
this in the future.

Bug: 189865806
Test: atest VtsHalIdentityTargetTest
Test: atest CtsIdentityTestCases
Change-Id: Ief55528af8e14707b5c4d9431a851f9c8ccfae0c
Merged-In: Ief55528af8e14707b5c4d9431a851f9c8ccfae0c
This commit is contained in:
David Zeuthen
2021-05-27 18:24:36 -04:00
parent b098e79d83
commit 95accb094e
3 changed files with 11 additions and 2 deletions

View File

@@ -210,6 +210,15 @@ ndk::ScopedAStatus WritableIdentityCredential::beginAddEntry(
"numAccessControlProfileRemaining_ is not zero"));
}
// Ensure passed-in profile ids reference valid access control profiles
for (const int32_t id : accessControlProfileIds) {
if (accessControlProfileIds_.find(id) == accessControlProfileIds_.end()) {
return ndk::ScopedAStatus(AStatus_fromServiceSpecificErrorWithMessage(
IIdentityCredentialStore::STATUS_INVALID_DATA,
"An id in accessControlProfileIds references non-existing ACP"));
}
}
if (remainingEntryCounts_.size() == 0) {
return ndk::ScopedAStatus(AStatus_fromServiceSpecificErrorWithMessage(
IIdentityCredentialStore::STATUS_INVALID_DATA, "No more namespaces to add to"));

View File

@@ -102,7 +102,7 @@ void DeleteCredentialTests::provisionData() {
ASSERT_TRUE(wc->addAccessControlProfile(1, {}, false, 0, 0, &sacp).isOk());
// Single entry - don't care about the returned encrypted data
ASSERT_TRUE(wc->beginAddEntry({0}, "ns", "Some Data", 1).isOk());
ASSERT_TRUE(wc->beginAddEntry({1}, "ns", "Some Data", 1).isOk());
vector<uint8_t> encryptedData;
ASSERT_TRUE(wc->addEntryValue({9}, &encryptedData).isOk());

View File

@@ -102,7 +102,7 @@ void ProveOwnershipTests::provisionData() {
ASSERT_TRUE(wc->addAccessControlProfile(1, {}, false, 0, 0, &sacp).isOk());
// Single entry - don't care about the returned encrypted data
ASSERT_TRUE(wc->beginAddEntry({0}, "ns", "Some Data", 1).isOk());
ASSERT_TRUE(wc->beginAddEntry({1}, "ns", "Some Data", 1).isOk());
vector<uint8_t> encryptedData;
ASSERT_TRUE(wc->addEntryValue({9}, &encryptedData).isOk());