diff options
author | Tom Sepez <tsepez@chromium.org> | 2016-02-19 14:22:56 -0800 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2016-02-19 14:22:56 -0800 |
commit | 78353d5dbc0b0c9b2d6946005439a51efa7d108c (patch) | |
tree | 2d0048714b8630cd22b2f8e3129318ed93ee945d /xfa | |
parent | 711046ac7043ebeec2b0c9a5eb168418cd07a876 (diff) | |
download | pdfium-78353d5dbc0b0c9b2d6946005439a51efa7d108c.tar.xz |
Use safe arithmentic in CFX_BinaryBuf::ExpandBuf.
Always call ExpandBuf(), and if it returns, we know the
subsequent calculations won't overflow.
Also use std::unique_ptr, and fix unintentional copies thus
detected by its suppressed copy ctor in fsdk_baseform.cpp
Also Remove unused CFX_BinaryBuf::TakeOver(), AppendFill(), CopyData().
Also remove operator= in favor of using <<, for similarity
with std::ostream and friends.
Also move ByteStringC methods to CFX_ByteTextBuf sub-class.
Also re-order members, may pack tighter on 64-bits.
R=thestig@chromium.org
Review URL: https://codereview.chromium.org/1710403002 .
Diffstat (limited to 'xfa')
-rw-r--r-- | xfa/src/fxfa/src/fm2js/xfa_fm2jscontext.cpp | 25 | ||||
-rw-r--r-- | xfa/src/fxfa/src/fm2js/xfa_simpleexpression.cpp | 4 |
2 files changed, 19 insertions, 10 deletions
diff --git a/xfa/src/fxfa/src/fm2js/xfa_fm2jscontext.cpp b/xfa/src/fxfa/src/fm2js/xfa_fm2jscontext.cpp index 529474f5eb..77cf79bd7b 100644 --- a/xfa/src/fxfa/src/fm2js/xfa_fm2jscontext.cpp +++ b/xfa/src/fxfa/src/fm2js/xfa_fm2jscontext.cpp @@ -3760,8 +3760,9 @@ void CXFA_FM2JSContext::DecodeURL(const CFX_ByteStringC& szURLString, ++i; } wsResultBuf.AppendChar(0); - szResultString = - FX_UTF8Encode(wsResultBuf.GetBuffer(), wsResultBuf.GetLength()); + szResultString.Clear(); + szResultString << FX_UTF8Encode(wsResultBuf.GetBuffer(), + wsResultBuf.GetLength()); } void CXFA_FM2JSContext::DecodeHTML(const CFX_ByteStringC& szHTMLString, CFX_ByteTextBuf& szResultString) { @@ -3833,8 +3834,9 @@ void CXFA_FM2JSContext::DecodeHTML(const CFX_ByteStringC& szHTMLString, ++i; } wsResultBuf.AppendChar(0); - szResultString = - FX_UTF8Encode(wsResultBuf.GetBuffer(), wsResultBuf.GetLength()); + szResultString.Clear(); + szResultString << FX_UTF8Encode(wsResultBuf.GetBuffer(), + wsResultBuf.GetLength()); } void CXFA_FM2JSContext::DecodeXML(const CFX_ByteStringC& szXMLString, CFX_ByteTextBuf& szResultString) { @@ -3930,7 +3932,8 @@ void CXFA_FM2JSContext::DecodeXML(const CFX_ByteStringC& szXMLString, iCode = 0; } wsXMLBuf.AppendChar(0); - szResultString = FX_UTF8Encode(wsXMLBuf.GetBuffer(), wsXMLBuf.GetLength()); + szResultString.Clear(); + szResultString << FX_UTF8Encode(wsXMLBuf.GetBuffer(), wsXMLBuf.GetLength()); } void CXFA_FM2JSContext::Encode(FXJSE_HOBJECT hThis, const CFX_ByteStringC& szFuncName, @@ -4083,7 +4086,9 @@ void CXFA_FM2JSContext::EncodeURL(const CFX_ByteStringC& szURLString, } } wsResultBuf.AppendChar(0); - szResultBuf = FX_UTF8Encode(wsResultBuf.GetBuffer(), wsResultBuf.GetLength()); + szResultBuf.Clear(); + szResultBuf << FX_UTF8Encode(wsResultBuf.GetBuffer(), + wsResultBuf.GetLength()); } void CXFA_FM2JSContext::EncodeHTML(const CFX_ByteStringC& szHTMLString, CFX_ByteTextBuf& szResultBuf) { @@ -4135,7 +4140,9 @@ void CXFA_FM2JSContext::EncodeHTML(const CFX_ByteStringC& szHTMLString, ++i; } wsResultBuf.AppendChar(0); - szResultBuf = FX_UTF8Encode(wsResultBuf.GetBuffer(), wsResultBuf.GetLength()); + szResultBuf.Clear(); + szResultBuf << FX_UTF8Encode(wsResultBuf.GetBuffer(), + wsResultBuf.GetLength()); } void CXFA_FM2JSContext::EncodeXML(const CFX_ByteStringC& szXMLString, CFX_ByteTextBuf& szResultBuf) { @@ -4215,7 +4222,9 @@ void CXFA_FM2JSContext::EncodeXML(const CFX_ByteStringC& szXMLString, } } wsResultBuf.AppendChar(0); - szResultBuf = FX_UTF8Encode(wsResultBuf.GetBuffer(), wsResultBuf.GetLength()); + szResultBuf.Clear(); + szResultBuf << FX_UTF8Encode(wsResultBuf.GetBuffer(), + wsResultBuf.GetLength()); } FX_BOOL CXFA_FM2JSContext::HTMLSTR2Code(const CFX_WideStringC& pData, uint32_t& iCode) { diff --git a/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.cpp b/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.cpp index c67681f6ba..7048c38d5a 100644 --- a/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.cpp +++ b/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.cpp @@ -447,8 +447,8 @@ CXFA_FMCallExpression::~CXFA_FMCallExpression() { } } FX_BOOL CXFA_FMCallExpression::IsBuildInFunc(CFX_WideTextBuf& funcName) { - int32_t iLength = funcName.GetLength(); - uint32_t uHash = FX_HashCode_String_GetW(funcName.GetBuffer(), iLength, TRUE); + uint32_t uHash = + FX_HashCode_String_GetW(funcName.GetBuffer(), funcName.GetLength(), TRUE); XFA_FMBuildInFunc buildinfunction; int32_t iStart = 0, iEnd = (sizeof(buildInFuncs) / sizeof(buildInFuncs[0])) - 1; |