Test bad inputs to FPDFAvail_* APIs. Add a couple more FPDFDataAvailEmbedderTests to improve test coverage. Change-Id: I222a5fa25cd7fe1906ca58e394fe1df9d22364cc Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/58932 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/fpdf_dataavail_embeddertest.cpp b/fpdfsdk/fpdf_dataavail_embeddertest.cpp index 137c5c9..64560b6 100644 --- a/fpdfsdk/fpdf_dataavail_embeddertest.cpp +++ b/fpdfsdk/fpdf_dataavail_embeddertest.cpp
@@ -378,3 +378,20 @@ // Test that api is robust enough to handle the bad case. EXPECT_FALSE(FPDF_GetMetaText(document_, "Type", nullptr, 0)); } + +TEST_F(FPDFDataAvailEmbedderTest, BadInputsToAPIs) { + EXPECT_EQ(PDF_DATA_ERROR, FPDFAvail_IsDocAvail(nullptr, nullptr)); + EXPECT_FALSE(FPDFAvail_GetDocument(nullptr, nullptr)); + EXPECT_EQ(0, FPDFAvail_GetFirstPageNum(nullptr)); + EXPECT_EQ(PDF_DATA_ERROR, FPDFAvail_IsPageAvail(nullptr, 0, nullptr)); + EXPECT_EQ(PDF_FORM_ERROR, FPDFAvail_IsFormAvail(nullptr, nullptr)); + EXPECT_EQ(PDF_LINEARIZATION_UNKNOWN, FPDFAvail_IsLinearized(nullptr)); +} + +TEST_F(FPDFDataAvailEmbedderTest, NegativePageIndex) { + TestAsyncLoader loader("linearized.pdf"); + avail_ = FPDFAvail_Create(loader.file_avail(), loader.file_access()); + ASSERT_EQ(PDF_DATA_AVAIL, FPDFAvail_IsDocAvail(avail_, loader.hints())); + EXPECT_EQ(PDF_DATA_NOTAVAIL, + FPDFAvail_IsPageAvail(avail_, -1, loader.hints())); +}