summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLei Zhang <thestig@chromium.org>2018-07-13 18:46:21 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-07-13 18:46:21 +0000
commitc8a235ba4d42b67fa1bfe5f7c0dd872a3b72fc5f (patch)
treee88652ba4645872b98cca53beaa93ff611f0d790
parent3a83fe5cf6cf1c056118531105359fc31615dc7f (diff)
downloadpdfium-c8a235ba4d42b67fa1bfe5f7c0dd872a3b72fc5f.tar.xz
Validate out-parameters in FPDF_GetPageSizeByIndex().
Change-Id: I2927ebdf0aff31193ad69dcd5542f3858ffdd6ee Reviewed-on: https://pdfium-review.googlesource.com/37790 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
-rw-r--r--fpdfsdk/fpdf_view.cpp3
-rw-r--r--fpdfsdk/fpdf_view_embeddertest.cpp6
2 files changed, 8 insertions, 1 deletions
diff --git a/fpdfsdk/fpdf_view.cpp b/fpdfsdk/fpdf_view.cpp
index 8aca6fb9f1..5fdc82af73 100644
--- a/fpdfsdk/fpdf_view.cpp
+++ b/fpdfsdk/fpdf_view.cpp
@@ -920,6 +920,9 @@ FPDF_EXPORT int FPDF_CALLCONV FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document,
int page_index,
double* width,
double* height) {
+ if (!width || !height)
+ return false;
+
auto* pDoc = CPDFDocumentFromFPDFDocument(document);
if (!pDoc)
return false;
diff --git a/fpdfsdk/fpdf_view_embeddertest.cpp b/fpdfsdk/fpdf_view_embeddertest.cpp
index 1eedda3d4b..8cea7de21c 100644
--- a/fpdfsdk/fpdf_view_embeddertest.cpp
+++ b/fpdfsdk/fpdf_view_embeddertest.cpp
@@ -593,11 +593,14 @@ TEST_F(FPDFViewEmbeddertest, FPDF_RenderPageBitmapWithMatrix) {
TEST_F(FPDFViewEmbeddertest, FPDF_GetPageSizeByIndex) {
EXPECT_TRUE(OpenDocument("rectangles.pdf"));
- CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document());
double width = 0;
double height = 0;
+ EXPECT_FALSE(FPDF_GetPageSizeByIndex(nullptr, 0, &width, &height));
+ EXPECT_FALSE(FPDF_GetPageSizeByIndex(document(), 0, nullptr, &height));
+ EXPECT_FALSE(FPDF_GetPageSizeByIndex(document(), 0, &width, nullptr));
+
// Page -1 doesn't exist.
EXPECT_FALSE(FPDF_GetPageSizeByIndex(document(), -1, &width, &height));
@@ -609,6 +612,7 @@ TEST_F(FPDFViewEmbeddertest, FPDF_GetPageSizeByIndex) {
EXPECT_EQ(200.0, width);
EXPECT_EQ(300.0, height);
+ CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document());
#ifdef PDF_ENABLE_XFA
// TODO(tsepez): XFA must obtain this size without parsing.
EXPECT_EQ(1u, pDoc->GetParsedPageCountForTesting());