Index: chrome/utility/printing_handler.cc |
diff --git a/chrome/utility/printing_handler.cc b/chrome/utility/printing_handler.cc |
index 084d33a9d7cf48cede50770f5dc27415b316073a..90f7d541f881c676dad1efb5fdfd35ddf3388e49 100644 |
--- a/chrome/utility/printing_handler.cc |
+++ b/chrome/utility/printing_handler.cc |
@@ -295,7 +295,7 @@ void PrintingHandler::OnRenderPDFPagesToMetafileGetPage( |
int page_number, |
IPC::PlatformFileForTransit output_file) { |
base::File emf_file = IPC::PlatformFileForTransitToFile(output_file); |
- double scale_factor = 1.0; |
+ float scale_factor = 1.0f; |
bool success = |
RenderPdfPageToMetafile(page_number, emf_file.Pass(), &scale_factor); |
Send(new ChromeUtilityHostMsg_RenderPDFPagesToMetafiles_PageDone( |
@@ -331,9 +331,10 @@ int PrintingHandler::LoadPDF(base::File pdf_file) { |
if (!g_pdf_lib.Get().IsValid()) |
return 0; |
- int64 length = pdf_file.GetLength(); |
- if (length < 0) |
+ int64 length64 = pdf_file.GetLength(); |
+ if (length64 < 0 || length64 > std::numeric_limits<int>::max()) |
Vitaly Buka (NO REVIEWS)
2014/10/09 19:17:51
better length64 <= 0 to avoid call of pdf_data_.da
Peter Kasting
2014/10/09 19:49:35
Done.
|
return 0; |
+ int length = static_cast<int>(length64); |
pdf_data_.resize(length); |
if (length != pdf_file.Read(0, pdf_data_.data(), pdf_data_.size())) |
@@ -349,7 +350,7 @@ int PrintingHandler::LoadPDF(base::File pdf_file) { |
bool PrintingHandler::RenderPdfPageToMetafile(int page_number, |
base::File output_file, |
- double* scale_factor) { |
+ float* scale_factor) { |
printing::Emf metafile; |
metafile.Init(); |
@@ -405,16 +406,17 @@ bool PrintingHandler::RenderPDFPagesToPWGRaster( |
return false; |
base::File::Info info; |
- if (!pdf_file.GetInfo(&info) || info.size <= 0) |
+ if (!pdf_file.GetInfo(&info) || info.size <= 0 || |
+ info.size > std::numeric_limits<int>::max()) |
return false; |
+ int data_size = static_cast<int>(info.size); |
- std::string data(info.size, 0); |
- int data_size = pdf_file.Read(0, &data[0], data.size()); |
- if (data_size != static_cast<int>(data.size())) |
+ std::string data(data_size, 0); |
+ if (pdf_file.Read(0, &data[0], data_size) != data_size) |
Vitaly Buka (NO REVIEWS)
2014/10/09 19:17:51
data.data() for consistency?
Peter Kasting
2014/10/09 19:49:35
We can't; data() returns a const char* (it's for r
|
return false; |
int total_page_count = 0; |
- if (!g_pdf_lib.Get().GetPDFDocInfo(data.data(), data.size(), |
+ if (!g_pdf_lib.Get().GetPDFDocInfo(data.data(), data_size, |
&total_page_count, NULL)) { |
return false; |
} |
@@ -437,7 +439,7 @@ bool PrintingHandler::RenderPDFPagesToPWGRaster( |
} |
if (!g_pdf_lib.Get().RenderPDFPageToBitmap(data.data(), |
- data.size(), |
+ data_size, |
Vitaly Buka (NO REVIEWS)
2014/10/09 19:17:50
data.size() is best source of truth regarding size
Peter Kasting
2014/10/09 19:49:35
Using data_size here was intentional:
(1) We ensur
|
page_number, |
image.pixel_data(), |
image.size().width(), |