diff --git a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp index dc1cfb3e..99aa561d 100644 --- a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp +++ b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp @@ -21,6 +21,7 @@ #include "level3.h" #include "log.h" +#include "lock.h" #include "file_store.h" #include "properties.h" @@ -314,6 +315,7 @@ class Adapter { } LevelSession get(OEMCrypto_SESSION session) { + AutoLock auto_lock(lookup_lock_); map_iterator pair = session_map_.find(session); if (pair == session_map_.end()) { return LevelSession(); @@ -322,6 +324,7 @@ class Adapter { } OEMCryptoResult OpenSession(OEMCrypto_SESSION* session, SecurityLevel level) { + AutoLock auto_lock(lookup_lock_); LevelSession new_session; OEMCryptoResult result; if (level == kLevelDefault && level1_valid_) { @@ -344,6 +347,7 @@ class Adapter { } OEMCryptoResult CloseSession(OEMCrypto_SESSION session) { + AutoLock auto_lock(lookup_lock_); map_iterator pair = session_map_.find(session); if (pair == session_map_.end()) { return OEMCrypto_ERROR_INVALID_SESSION; @@ -360,6 +364,7 @@ class Adapter { struct FunctionPointers level1_; struct FunctionPointers level3_; std::map session_map_; + Lock lookup_lock_; // This is just for debugging the map between session ids. // If we add this to the level 3 session id, then the external session // id will match the internal session id in the last two digits.