diff --git a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp index 6599a800..283040b0 100644 --- a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp +++ b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp @@ -1236,8 +1236,13 @@ class Adapter { if (!level1_.GenerateOTARequest) return false; size_t buffer_size = 500; // a large buffer. std::vector buffer(buffer_size); - return level1_.GenerateOTARequest(0, buffer.data(), &buffer_size, 0) != - OEMCrypto_ERROR_NOT_IMPLEMENTED; + OEMCryptoResult result = + level1_.GenerateOTARequest(0, buffer.data(), &buffer_size, 0); + if (result == OEMCrypto_ERROR_SHORT_BUFFER) { + buffer.resize(buffer_size); + result = level1_.GenerateOTARequest(0, buffer.data(), &buffer_size, 0); + } + return result == OEMCrypto_SUCCESS; } private: