Index: media/cdm/simple_cdm_buffer.cc |
diff --git a/media/cdm/simple_cdm_buffer.cc b/media/cdm/simple_cdm_buffer.cc |
index c5f3b8bbf96d0e88d159cb81d49e299a1ad148f8..6e0074e1ac2e5a3dd80719105c9b0293ac940d57 100644 |
--- a/media/cdm/simple_cdm_buffer.cc |
+++ b/media/cdm/simple_cdm_buffer.cc |
@@ -4,14 +4,23 @@ |
#include "media/cdm/simple_cdm_buffer.h" |
+#include <limits> |
+ |
#include "base/logging.h" |
+#include "base/numerics/safe_conversions.h" |
namespace media { |
// static |
-SimpleCdmBuffer* SimpleCdmBuffer::Create(uint32_t capacity) { |
+SimpleCdmBuffer* SimpleCdmBuffer::Create(size_t capacity) { |
DCHECK(capacity); |
- return new SimpleCdmBuffer(capacity); |
+ |
+ // cdm::Buffer interface limits capacity to uint32. Requests bigger than |
+ // uint32_max will fail. |
+ if (capacity > static_cast<size_t>(std::numeric_limits<uint32_t>::max())) |
+ return nullptr; |
xhwang
2016/03/15 06:17:22
This should really never happen since the caller o
jrummell
2016/03/15 18:49:42
Done.
|
+ |
+ return new SimpleCdmBuffer(base::checked_cast<uint32_t>(capacity)); |
} |
SimpleCdmBuffer::SimpleCdmBuffer(uint32_t capacity) |