| Index: chrome/utility/printing_handler.cc
|
| diff --git a/chrome/utility/printing_handler.cc b/chrome/utility/printing_handler.cc
|
| index 084d33a9d7cf48cede50770f5dc27415b316073a..e989144145637f8824f38dcf7fd91ac2317d620c 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())
|
| 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)
|
| 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,
|
| page_number,
|
| image.pixel_data(),
|
| image.size().width(),
|
|
|