diff options
author | JUN FANG <jun_fang@foxitsoftware.com> | 2015-05-13 17:25:40 -0700 |
---|---|---|
committer | JUN FANG <jun_fang@foxitsoftware.com> | 2015-05-13 17:25:40 -0700 |
commit | 08e021c81a41c5394a045b8e71b08bf0fb62634c (patch) | |
tree | 6873f52ca8762dfb0d3b8a759a5e8046a13155e4 /core/src | |
parent | 9857e204304e21685a10e98037dd05cb10ab9bf5 (diff) | |
download | pdfium-08e021c81a41c5394a045b8e71b08bf0fb62634c.tar.xz |
Fix integer overflow in conversion from float to integer.
BUG=471991
R=brucedawson@chromium.org
Review URL: https://codereview.chromium.org/1141613002
Diffstat (limited to 'core/src')
-rw-r--r-- | core/src/fxcrt/fx_basic_coords.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/core/src/fxcrt/fx_basic_coords.cpp b/core/src/fxcrt/fx_basic_coords.cpp index 62061704c7..8e7bb3e751 100644 --- a/core/src/fxcrt/fx_basic_coords.cpp +++ b/core/src/fxcrt/fx_basic_coords.cpp @@ -4,6 +4,7 @@ // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com +#include <limits.h> #include "../../include/fxcrt/fx_ext.h" void FX_RECT::Normalize() { @@ -53,15 +54,14 @@ FX_BOOL GetIntersection(FX_FLOAT low1, FX_FLOAT high1, FX_FLOAT low2, FX_FLOAT h } extern "C" int FXSYS_round(FX_FLOAT d) { - int iRet = 0; - if (d >= 0.0f) { - iRet = (int)(d + 0.5f); - if (iRet >= 0) { - return iRet; - } - return -iRet; + if (d < (FX_FLOAT)INT_MIN) { + return INT_MIN; + } + if (d > (FX_FLOAT)INT_MAX) { + return INT_MAX; } - return (int)(d - 0.5f); + + return (int)round(d); } CFX_FloatRect::CFX_FloatRect(const FX_RECT& rect) { |