diff --git a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp index 94c795d1..bc70903b 100644 --- a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp +++ b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp @@ -756,8 +756,6 @@ class Adapter { } } - bool level1_valid() { return level1_valid_; } - void SetSandbox(const uint8_t* sandbox_id, size_t sandbox_id_length) { sandbox_id_.assign(sandbox_id, sandbox_id + sandbox_id_length); } @@ -819,21 +817,17 @@ class Adapter { level1_.BuildInformation()); } } else { - FallBackToLevel3(); + level1_ = FunctionPointers(); // revert to all null pointers. + level1_valid_ = false; + // Note: if the function pointers are bad, we do not close the library and + // try again later. Instead, we permanently fall back to L3. This is a + // debatable choice: I decided the risk of a dlclose resource leak out + // weighed the possibility that the library would be fixed on the next + // load. } return result; } - void FallBackToLevel3() { - level1_ = FunctionPointers(); // revert to all null pointers. - level1_valid_ = false; - // Note: if the function pointers are bad, we do not close the library and - // try again later. Instead, we permanently fall back to L3. This is a - // debatable choice: I decided the risk of a dlclose resource leak out - // weighed the possibility that the library would be fixed on the next - // load. - } - bool LoadLevel1(wvcdm::metrics::OemCryptoDynamicAdapterMetrics* metrics) { if (metrics == nullptr) { return false; @@ -1288,7 +1282,6 @@ namespace wvcdm { OEMCryptoResult OEMCrypto_InitializeAndCheckKeybox( bool* needs_keybox_provisioning) { if (!needs_keybox_provisioning) return OEMCrypto_ERROR_UNKNOWN_FAILURE; - *needs_keybox_provisioning = false; if (!gAdapter) { gAdapter.reset(new Adapter()); } @@ -1302,8 +1295,7 @@ OEMCryptoResult OEMCrypto_InitializeAndCheckKeybox( if (ignore_count > 0) { LOGD("Ignoring keybox status %d", static_cast(keybox_status)); } - LOGD("L1 has no keybox. Falling back to L3."); - gAdapter->FallBackToLevel3(); + *needs_keybox_provisioning = true; return OEMCrypto_SUCCESS; } return keybox_status;