Index: media/blink/webcontentdecryptionmodulesession_impl.cc |
diff --git a/media/blink/webcontentdecryptionmodulesession_impl.cc b/media/blink/webcontentdecryptionmodulesession_impl.cc |
index 94afa0e438158981d3f2508a94f7de0ae646b1b0..5ecba27e9cbabe567e24af5855fcdc9a63b61c47 100644 |
--- a/media/blink/webcontentdecryptionmodulesession_impl.cc |
+++ b/media/blink/webcontentdecryptionmodulesession_impl.cc |
@@ -8,6 +8,7 @@ |
#include "base/callback_helpers.h" |
#include "base/logging.h" |
#include "base/numerics/safe_conversions.h" |
+#include "base/stl_util.h" |
#include "base/strings/string_util.h" |
#include "base/strings/utf_string_conversions.h" |
#include "media/base/cdm_key_information.h" |
@@ -110,12 +111,11 @@ static bool SanitizeInitData(EmeInitDataType init_data_type, |
return true; |
case EmeInitDataType::CENC: |
- if (!ValidatePsshInput(init_data, init_data_length)) { |
+ sanitized_init_data->assign(init_data, init_data + init_data_length); |
+ if (!ValidatePsshInput(*sanitized_init_data)) { |
error_message->assign("Initialization data for CENC is incorrect."); |
return false; |
} |
- |
- sanitized_init_data->assign(init_data, init_data + init_data_length); |
return true; |
case EmeInitDataType::KEYIDS: { |
@@ -173,6 +173,7 @@ void WebContentDecryptionModuleSessionImpl::initializeNewSession( |
size_t init_data_length, |
blink::WebEncryptedMediaSessionType session_type, |
blink::WebContentDecryptionModuleResult result) { |
+ DCHECK(init_data); |
DCHECK(session_id_.empty()); |
// From https://w3c.github.io/encrypted-media/#generateRequest. |
@@ -225,9 +226,7 @@ void WebContentDecryptionModuleSessionImpl::initializeNewSession( |
// instance value. |
// 9.7 Use the cdm to execute the following steps: |
adapter_->InitializeNewSession( |
- eme_init_data_type, vector_as_array(&sanitized_init_data), |
- base::saturated_cast<int>(sanitized_init_data.size()), |
- convertSessionType(session_type), |
+ eme_init_data_type, sanitized_init_data, convertSessionType(session_type), |
scoped_ptr<NewSessionCdmPromise>(new NewSessionCdmResultPromise( |
result, adapter_->GetKeySystemUMAPrefix() + kGenerateRequestUMAName, |
base::Bind( |
@@ -260,7 +259,7 @@ void WebContentDecryptionModuleSessionImpl::update( |
DCHECK(response); |
DCHECK(!session_id_.empty()); |
adapter_->UpdateSession( |
- session_id_, response, base::saturated_cast<int>(response_length), |
+ session_id_, std::vector<uint8>(response, response + response_length), |
scoped_ptr<SimpleCdmPromise>(new CdmResultPromise<>( |
result, adapter_->GetKeySystemUMAPrefix() + kUpdateSessionUMAName))); |
} |