Index: printing/pdf_metafile_cg_mac.cc |
diff --git a/printing/pdf_metafile_cg_mac.cc b/printing/pdf_metafile_cg_mac.cc |
index c9eb9df910b9cc51ae4451fa6d1b099cde080b12..16744bfde6c702ab27c3e3fa91df1cde8bd6148f 100644 |
--- a/printing/pdf_metafile_cg_mac.cc |
+++ b/printing/pdf_metafile_cg_mac.cc |
@@ -11,6 +11,7 @@ |
#include "base/logging.h" |
#include "base/mac/mac_util.h" |
#include "base/mac/scoped_cftyperef.h" |
+#include "base/numerics/safe_conversions.h" |
#include "base/strings/sys_string_conversions.h" |
#include "ui/gfx/geometry/rect.h" |
#include "ui/gfx/geometry/size.h" |
@@ -87,13 +88,15 @@ bool PdfMetafileCg::Init() { |
} |
bool PdfMetafileCg::InitFromData(const void* src_buffer, |
- uint32_t src_buffer_size) { |
+ size_t src_buffer_size) { |
DCHECK(!context_.get()); |
DCHECK(!pdf_data_.get()); |
- if (!src_buffer || src_buffer_size == 0) { |
+ if (!src_buffer || !src_buffer_size) |
+ return false; |
+ |
+ if (!base::IsValueInRangeForNumericType<CFIndex>(src_buffer_size)) |
return false; |
- } |
pdf_data_.reset(CFDataCreateMutable(kCFAllocatorDefault, src_buffer_size)); |
CFDataAppendBytes(pdf_data_, static_cast<const UInt8*>(src_buffer), |