From ce535ad21e545740f9c287c92b97aac7ee3b22ea Mon Sep 17 00:00:00 2001 From: Fred Gylys-Colwell Date: Wed, 1 Mar 2017 13:56:35 -0800 Subject: [PATCH] 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 --- .../mock/src/oemcrypto_usage_table_mock.cpp | 4 ++-- .../oemcrypto/test/oemcrypto_test.cpp | 19 ++++++++----------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/libwvdrmengine/oemcrypto/mock/src/oemcrypto_usage_table_mock.cpp b/libwvdrmengine/oemcrypto/mock/src/oemcrypto_usage_table_mock.cpp index 3fb80e44..485df98d 100644 --- a/libwvdrmengine/oemcrypto/mock/src/oemcrypto_usage_table_mock.cpp +++ b/libwvdrmengine/oemcrypto/mock/src/oemcrypto_usage_table_mock.cpp @@ -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"); diff --git a/libwvdrmengine/oemcrypto/test/oemcrypto_test.cpp b/libwvdrmengine/oemcrypto/test/oemcrypto_test.cpp index 391318a3..e5ab91b6 100644 --- a/libwvdrmengine/oemcrypto/test/oemcrypto_test.cpp +++ b/libwvdrmengine/oemcrypto/test/oemcrypto_test.cpp @@ -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) {