summaryrefslogtreecommitdiff
path: root/core/fxge/dib/fx_dib_engine.cpp
diff options
context:
space:
mode:
authorweili <weili@chromium.org>2016-08-11 19:43:58 -0700
committerCommit bot <commit-bot@chromium.org>2016-08-11 19:43:58 -0700
commit229d05df5bc5deb3890b26b614113c25d9b6935e (patch)
tree1491fa61aab052ac7784ef90c8a7b60368daac27 /core/fxge/dib/fx_dib_engine.cpp
parent2736276deff3abef9d6b226eb9f585abe1384591 (diff)
downloadpdfium-229d05df5bc5deb3890b26b614113c25d9b6935e.tar.xz
Fix an integer overflow in CStretchEngine constructor
When the source bitmap's width and height are large, the multiplication could easily overflow a signed integer. Change to use 'long long' type for calculation to avoid that. BUG=chromium:635663 Review-Url: https://codereview.chromium.org/2240723002
Diffstat (limited to 'core/fxge/dib/fx_dib_engine.cpp')
-rw-r--r--core/fxge/dib/fx_dib_engine.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/core/fxge/dib/fx_dib_engine.cpp b/core/fxge/dib/fx_dib_engine.cpp
index 520148fc77..88b0d4b271 100644
--- a/core/fxge/dib/fx_dib_engine.cpp
+++ b/core/fxge/dib/fx_dib_engine.cpp
@@ -306,8 +306,8 @@ CStretchEngine::CStretchEngine(IFX_ScanlineComposer* pDestBitmap,
FX_BOOL bInterpol =
flags & FXDIB_INTERPOL || flags & FXDIB_BICUBIC_INTERPOL;
if (!bInterpol && FXSYS_abs(dest_width) != 0 &&
- FXSYS_abs(dest_height) <
- m_SrcWidth * m_SrcHeight * 8 / FXSYS_abs(dest_width)) {
+ FXSYS_abs(dest_height) / 8 < static_cast<long long>(m_SrcWidth) *
+ m_SrcHeight / FXSYS_abs(dest_width)) {
flags = FXDIB_INTERPOL;
}
m_Flags = flags;