Report error OEMCrypto_ERROR_ENTRY_IN_USE
Merge from Widevine repo of http://go/wvgerrit/24311 This CL adds the error OEMCrypto_ERROR_ENTRY_IN_USE to unit tests, the reference oemcrypto, and the level 3 haystack. bug: 35879590 Change-Id: Ifbfaf97c0045147aed4498ec0b57d90b26f100d0
This commit is contained in:
@@ -445,7 +445,7 @@ OEMCryptoResult UsageTable::ShrinkUsageTableHeader(
|
||||
for (size_t i = new_table_size; i < sessions_.size(); ++i) {
|
||||
if (sessions_[i]) {
|
||||
LOGE("ShrinkUsageTableHeader: session open for %d", i);
|
||||
return OEMCrypto_ERROR_INVALID_CONTEXT;
|
||||
return OEMCrypto_ERROR_ENTRY_IN_USE;
|
||||
}
|
||||
}
|
||||
generation_numbers_.resize(new_table_size);
|
||||
@@ -597,7 +597,7 @@ OEMCryptoResult UsageTable::MoveEntry(UsageTableEntry* entry,
|
||||
}
|
||||
if (sessions_[new_index]) {
|
||||
LOGE("MoveEntry: session open for %d", new_index);
|
||||
return OEMCrypto_ERROR_INVALID_SESSION;
|
||||
return OEMCrypto_ERROR_ENTRY_IN_USE;
|
||||
}
|
||||
if (!entry) {
|
||||
LOGE("MoveEntry: null entry");
|
||||
|
||||
@@ -5148,11 +5148,12 @@ class UsageTableDefragTest : public UsageTableTest {
|
||||
ASSERT_NO_FATAL_FAILURE(s->close());
|
||||
}
|
||||
|
||||
void ShrinkHeader(uint32_t new_size, bool expect_success = true) {
|
||||
void ShrinkHeader(uint32_t new_size,
|
||||
OEMCryptoResult expected_result = OEMCrypto_SUCCESS) {
|
||||
size_t header_buffer_length = 0;
|
||||
OEMCryptoResult sts =
|
||||
OEMCrypto_ShrinkUsageTableHeader(new_size, NULL, &header_buffer_length);
|
||||
if (expect_success) {
|
||||
if (expected_result == OEMCrypto_SUCCESS) {
|
||||
ASSERT_EQ(OEMCrypto_ERROR_SHORT_BUFFER, sts);
|
||||
} else {
|
||||
ASSERT_NE(OEMCrypto_SUCCESS, sts);
|
||||
@@ -5163,11 +5164,7 @@ class UsageTableDefragTest : public UsageTableTest {
|
||||
sts = OEMCrypto_ShrinkUsageTableHeader(
|
||||
new_size, &encrypted_usage_header_[0],
|
||||
&header_buffer_length);
|
||||
if (expect_success) {
|
||||
ASSERT_EQ(OEMCrypto_SUCCESS, sts);
|
||||
} else {
|
||||
ASSERT_NE(OEMCrypto_SUCCESS, sts);
|
||||
}
|
||||
ASSERT_EQ(expected_result, sts);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -5215,7 +5212,7 @@ TEST_F(UsageTableDefragTest, MoveUsageEntriesToOpenSession) {
|
||||
ASSERT_NO_FATAL_FAILURE(s0.ReloadUsageEntry());
|
||||
// s0 currently open on index 0. Expect this to fail:
|
||||
ASSERT_NO_FATAL_FAILURE(s1.MoveUsageEntry(0, &encrypted_usage_header_,
|
||||
OEMCrypto_ERROR_INVALID_SESSION));
|
||||
OEMCrypto_ERROR_ENTRY_IN_USE));
|
||||
}
|
||||
|
||||
TEST_F(UsageTableDefragTest, ShrinkOverOpenSessions) {
|
||||
@@ -5228,9 +5225,9 @@ TEST_F(UsageTableDefragTest, ShrinkOverOpenSessions) {
|
||||
s1.open();
|
||||
ASSERT_NO_FATAL_FAILURE(s1.ReloadUsageEntry());
|
||||
// Since s0 and s1 are open, we can't shrink.
|
||||
ASSERT_NO_FATAL_FAILURE(ShrinkHeader(1, /* expect_success */ false));
|
||||
ASSERT_NO_FATAL_FAILURE(ShrinkHeader(1, OEMCrypto_ERROR_ENTRY_IN_USE));
|
||||
s1.close(); // Can shrink after closing s1, even if s0 is open.
|
||||
ASSERT_NO_FATAL_FAILURE(ShrinkHeader(1, /* expect_success */ true));
|
||||
ASSERT_NO_FATAL_FAILURE(ShrinkHeader(1, OEMCrypto_SUCCESS));
|
||||
}
|
||||
|
||||
TEST_F(UsageTableDefragTest, EnlargeHeader) {
|
||||
@@ -5239,7 +5236,7 @@ TEST_F(UsageTableDefragTest, EnlargeHeader) {
|
||||
LoadFirstLicense(&s0, 0);
|
||||
LoadFirstLicense(&s1, 1);
|
||||
// Can only shrink the header -- not make it bigger.
|
||||
ASSERT_NO_FATAL_FAILURE(ShrinkHeader(4, /* expect_success */ false));
|
||||
ASSERT_NO_FATAL_FAILURE(ShrinkHeader(4, OEMCrypto_ERROR_UNKNOWN_FAILURE));
|
||||
}
|
||||
|
||||
TEST_F(UsageTableDefragTest, CreateNewHeaderWhileUsingOldOne) {
|
||||
|
||||
Reference in New Issue
Block a user