summaryrefslogtreecommitdiff
path: root/core/fxcrt/fx_basic_buffer.cpp
diff options
context:
space:
mode:
authordsinclair <dsinclair@chromium.org>2016-07-27 21:44:23 -0700
committerCommit bot <commit-bot@chromium.org>2016-07-27 21:44:23 -0700
commit6f1025492801aaa93fca2c0ed7c40a3389ad8cd1 (patch)
treef4a700dfae9f05be766fa54f769fbdd8a3da6755 /core/fxcrt/fx_basic_buffer.cpp
parentf73893a6110f2d4960b372fb4fe38e4fd629ce8f (diff)
downloadpdfium-6f1025492801aaa93fca2c0ed7c40a3389ad8cd1.tar.xz
Fixup integer conversion logic.chromium/2813chromium/2812chromium/2811
In bc8a64029f898286c3dcad3a6cecdc98ef30b139 we updated the FX_atonum logic to correctly handle integer overflow. This causes issues when parsing the Permissions flag of encrypted documents as that flag isn't encoded like other numbers. The Permissions flag is a unsigned value, and has to be treated as such since the sign bit is always set. The current logic will detect an overflow of the int value and return 0. The old logic would have detected the overflow and returned the negative result regardless. This CL updates the logic to do the string to int conversion as a uint32_t and then verifies the uint32_t value, if a sign was provided, fits within the int range, otherwise it converts it to an int and lets it be positive or negative as needed. BUG=pdfium:539 Review-Url: https://codereview.chromium.org/2168173002
Diffstat (limited to 'core/fxcrt/fx_basic_buffer.cpp')
0 files changed, 0 insertions, 0 deletions