diff options
author | Henri Sivonen <hsivonen@hsivonen.fi> | 2018-02-28 14:09:26 -0500 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-03-14 11:21:36 +0100 |
commit | d4b4d3a29dc99ea87f54a6d0ec8d09f3ed8716b6 (patch) | |
tree | 3f526b2577a75eac4fec75a8af15876214f72b00 /intl/uconv/ucvtw/nsBIG5ToUnicode.cpp | |
parent | b4cf8ad1630788fde7c1dd4a5afb50fd07ba032a (diff) | |
download | uxp-d4b4d3a29dc99ea87f54a6d0ec8d09f3ed8716b6.tar.gz |
Bug 1440926 - Use overflow-checking math when computing Big5 max length. r=emk, a=RyanVM
MozReview-Commit-ID: 1Gney5cYyhu
Diffstat (limited to 'intl/uconv/ucvtw/nsBIG5ToUnicode.cpp')
-rw-r--r-- | intl/uconv/ucvtw/nsBIG5ToUnicode.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/intl/uconv/ucvtw/nsBIG5ToUnicode.cpp b/intl/uconv/ucvtw/nsBIG5ToUnicode.cpp index 8dbf84a147..b07df3d76e 100644 --- a/intl/uconv/ucvtw/nsBIG5ToUnicode.cpp +++ b/intl/uconv/ucvtw/nsBIG5ToUnicode.cpp @@ -152,7 +152,17 @@ nsBIG5ToUnicode::GetMaxLength(const char* aSrc, { // The length of the output in UTF-16 code units never exceeds the length // of the input in bytes. - *aDestLength = aSrcLength + (mPendingTrail ? 1 : 0) + (mBig5Lead ? 1 : 0); + mozilla::CheckedInt32 length = aSrcLength; + if (mPendingTrail) { + length += 1; + } + if (mBig5Lead) { + length += 1; + } + if (!length.isValid()) { + return NS_ERROR_OUT_OF_MEMORY; + } + *aDestLength = length.value(); return NS_OK; } |