poppler/Catalog.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
New commits: commit d8d63630427ca39da995e148fc1a80010c1804f9 Author: Ilaï Deutel <i...@google.com> Date: Wed Jul 19 19:07:54 2023 -0400 Fix float-cast-overflow error in Catalog This error was triggered when running the page_label_fuzzer using https://github.com/mozilla/pdf.js/blob/master/test/pdfs/poppler-67295-0.pdf as an input. The fix avoids extraneous casts in Catalog.cc: - Before: - int -> double -> int - long long -> double -> int - double -> int - After: - int (no cast) - long long -> int - double -> int diff --git a/poppler/Catalog.cc b/poppler/Catalog.cc index 7a1e4095..05807558 100644 --- a/poppler/Catalog.cc +++ b/poppler/Catalog.cc @@ -875,7 +875,13 @@ int Catalog::getNumPages() numPages = 0; } } else { - numPages = (int)obj.getNum(); + if (obj.isInt()) { + numPages = obj.getInt(); + } else if (obj.isInt64()) { + numPages = obj.getInt64(); + } else { + numPages = obj.getNum(); + } if (numPages <= 0) { error(errSyntaxError, -1, "Invalid page count {0:d}", numPages); numPages = 0;