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) {
|
for (size_t i = new_table_size; i < sessions_.size(); ++i) {
|
||||||
if (sessions_[i]) {
|
if (sessions_[i]) {
|
||||||
LOGE("ShrinkUsageTableHeader: session open for %d", 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);
|
generation_numbers_.resize(new_table_size);
|
||||||
@@ -597,7 +597,7 @@ OEMCryptoResult UsageTable::MoveEntry(UsageTableEntry* entry,
|
|||||||
}
|
}
|
||||||
if (sessions_[new_index]) {
|
if (sessions_[new_index]) {
|
||||||
LOGE("MoveEntry: session open for %d", new_index);
|
LOGE("MoveEntry: session open for %d", new_index);
|
||||||
return OEMCrypto_ERROR_INVALID_SESSION;
|
return OEMCrypto_ERROR_ENTRY_IN_USE;
|
||||||
}
|
}
|
||||||
if (!entry) {
|
if (!entry) {
|
||||||
LOGE("MoveEntry: null entry");
|
LOGE("MoveEntry: null entry");
|
||||||
|
|||||||
@@ -5148,11 +5148,12 @@ class UsageTableDefragTest : public UsageTableTest {
|
|||||||
ASSERT_NO_FATAL_FAILURE(s->close());
|
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;
|
size_t header_buffer_length = 0;
|
||||||
OEMCryptoResult sts =
|
OEMCryptoResult sts =
|
||||||
OEMCrypto_ShrinkUsageTableHeader(new_size, NULL, &header_buffer_length);
|
OEMCrypto_ShrinkUsageTableHeader(new_size, NULL, &header_buffer_length);
|
||||||
if (expect_success) {
|
if (expected_result == OEMCrypto_SUCCESS) {
|
||||||
ASSERT_EQ(OEMCrypto_ERROR_SHORT_BUFFER, sts);
|
ASSERT_EQ(OEMCrypto_ERROR_SHORT_BUFFER, sts);
|
||||||
} else {
|
} else {
|
||||||
ASSERT_NE(OEMCrypto_SUCCESS, sts);
|
ASSERT_NE(OEMCrypto_SUCCESS, sts);
|
||||||
@@ -5163,11 +5164,7 @@ class UsageTableDefragTest : public UsageTableTest {
|
|||||||
sts = OEMCrypto_ShrinkUsageTableHeader(
|
sts = OEMCrypto_ShrinkUsageTableHeader(
|
||||||
new_size, &encrypted_usage_header_[0],
|
new_size, &encrypted_usage_header_[0],
|
||||||
&header_buffer_length);
|
&header_buffer_length);
|
||||||
if (expect_success) {
|
ASSERT_EQ(expected_result, sts);
|
||||||
ASSERT_EQ(OEMCrypto_SUCCESS, sts);
|
|
||||||
} else {
|
|
||||||
ASSERT_NE(OEMCrypto_SUCCESS, sts);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -5215,7 +5212,7 @@ TEST_F(UsageTableDefragTest, MoveUsageEntriesToOpenSession) {
|
|||||||
ASSERT_NO_FATAL_FAILURE(s0.ReloadUsageEntry());
|
ASSERT_NO_FATAL_FAILURE(s0.ReloadUsageEntry());
|
||||||
// s0 currently open on index 0. Expect this to fail:
|
// s0 currently open on index 0. Expect this to fail:
|
||||||
ASSERT_NO_FATAL_FAILURE(s1.MoveUsageEntry(0, &encrypted_usage_header_,
|
ASSERT_NO_FATAL_FAILURE(s1.MoveUsageEntry(0, &encrypted_usage_header_,
|
||||||
OEMCrypto_ERROR_INVALID_SESSION));
|
OEMCrypto_ERROR_ENTRY_IN_USE));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(UsageTableDefragTest, ShrinkOverOpenSessions) {
|
TEST_F(UsageTableDefragTest, ShrinkOverOpenSessions) {
|
||||||
@@ -5228,9 +5225,9 @@ TEST_F(UsageTableDefragTest, ShrinkOverOpenSessions) {
|
|||||||
s1.open();
|
s1.open();
|
||||||
ASSERT_NO_FATAL_FAILURE(s1.ReloadUsageEntry());
|
ASSERT_NO_FATAL_FAILURE(s1.ReloadUsageEntry());
|
||||||
// Since s0 and s1 are open, we can't shrink.
|
// 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.
|
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) {
|
TEST_F(UsageTableDefragTest, EnlargeHeader) {
|
||||||
@@ -5239,7 +5236,7 @@ TEST_F(UsageTableDefragTest, EnlargeHeader) {
|
|||||||
LoadFirstLicense(&s0, 0);
|
LoadFirstLicense(&s0, 0);
|
||||||
LoadFirstLicense(&s1, 1);
|
LoadFirstLicense(&s1, 1);
|
||||||
// Can only shrink the header -- not make it bigger.
|
// 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) {
|
TEST_F(UsageTableDefragTest, CreateNewHeaderWhileUsingOldOne) {
|
||||||
|
|||||||
Reference in New Issue
Block a user