Avoid integer overflow when calculating loose char box
Calling FX_RECT::Height() can potentially cause an integer overflow, so
guard that with FX_RECT::IsValid().
Bug: 399144235
Change-Id: I3ab9810fd7979935e9ed29bba1c1967f78976bfd
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/129351
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
diff --git a/core/fpdftext/cpdf_textpage.cpp b/core/fpdftext/cpdf_textpage.cpp
index 57286a8..0522257 100644
--- a/core/fpdftext/cpdf_textpage.cpp
+++ b/core/fpdftext/cpdf_textpage.cpp
@@ -297,7 +297,7 @@
}
FX_RECT font_bbox = font->GetFontBBox();
- if (font_bbox.Height() != 0) {
+ if (font_bbox.Valid() && font_bbox.Height() != 0) {
// Compute `left` and `right` based on the individual character's `width`.
float width = text_object->GetCharWidth(charinfo.char_code());
CFX_Matrix inverse_matrix = charinfo.matrix().GetInverse();