| Index: webkit/plugins/ppapi/content_decryptor_delegate.cc
|
| diff --git a/webkit/plugins/ppapi/content_decryptor_delegate.cc b/webkit/plugins/ppapi/content_decryptor_delegate.cc
|
| index e62fca497573070fe7eb80ed3d107ce39438351c..233a553581add074e8aa69db8e568ebb9070ecc5 100644
|
| --- a/webkit/plugins/ppapi/content_decryptor_delegate.cc
|
| +++ b/webkit/plugins/ppapi/content_decryptor_delegate.cc
|
| @@ -640,24 +640,37 @@ void ContentDecryptorDelegate::KeyMessage(PP_Var key_system_var,
|
| return;
|
| }
|
|
|
| - EnterResourceNoLock<PPB_Buffer_API> enter(message_resource, true);
|
| - if (!enter.succeeded()) {
|
| - decryptor_client_->KeyError(key_system_string->value(),
|
| - session_id_string->value(),
|
| - media::Decryptor::kUnknownError,
|
| - 0);
|
| - return;
|
| - }
|
| + scoped_array<uint8> message_array;
|
| + int message_size = 0;
|
| +
|
| + if (message_resource) {
|
| + EnterResourceNoLock<PPB_Buffer_API> enter(message_resource, true);
|
| + if (!enter.succeeded()) {
|
| + decryptor_client_->KeyError(key_system_string->value(),
|
| + session_id_string->value(),
|
| + media::Decryptor::kUnknownError,
|
| + 0);
|
| + return;
|
| + }
|
|
|
| - BufferAutoMapper mapper(enter.object());
|
| - scoped_array<uint8> message_array(new uint8[mapper.size()]);
|
| - if (mapper.data() && mapper.size())
|
| + BufferAutoMapper mapper(enter.object());
|
| + if (!mapper.data() || !mapper.size()) {
|
| + decryptor_client_->KeyError(key_system_string->value(),
|
| + session_id_string->value(),
|
| + media::Decryptor::kUnknownError,
|
| + 0);
|
| + return;
|
| + }
|
| +
|
| + message_size = mapper.size();
|
| + message_array.reset(new uint8[message_size]);
|
| memcpy(message_array.get(), mapper.data(), mapper.size());
|
| + }
|
|
|
| decryptor_client_->KeyMessage(key_system_string->value(),
|
| session_id_string->value(),
|
| message_array.Pass(),
|
| - mapper.size(),
|
| + message_size,
|
| default_url_string->value());
|
| }
|
|
|
|
|