diff --git a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp index a4869cd8..a6f139b2 100644 --- a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp +++ b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp @@ -1308,7 +1308,13 @@ class Adapter { OEMCryptoResult RemoveEntitledKeySession(OEMCrypto_SESSION key_session) { LevelSession pair = GetSession(key_session); - if (!pair.fcn) return OEMCrypto_ERROR_INVALID_SESSION; + if (!pair.fcn) { + // If the entitlement session with the same session ID was closed before + // the entitled key session, GetSession() will return an empty pair. The + // entitled key session should already be released when its corresponding + // entitlement session was closed. In this case, simply return success. + return OEMCrypto_SUCCESS; + } if (pair.fcn->version < 16) return OEMCrypto_ERROR_NOT_IMPLEMENTED; if (pair.fcn->CreateEntitledKeySession == nullptr) return OEMCrypto_ERROR_NOT_IMPLEMENTED;