Index: xfa/fxfa/fm2js/xfa_simpleexpression.cpp |
diff --git a/xfa/fxfa/fm2js/xfa_simpleexpression.cpp b/xfa/fxfa/fm2js/xfa_simpleexpression.cpp |
index 47bb9df235583b0fcb51c34e0ba5a32762d2379e..a7a88ec30aa70d0d22d68c6a7470a7c7e5946a16 100644 |
--- a/xfa/fxfa/fm2js/xfa_simpleexpression.cpp |
+++ b/xfa/fxfa/fm2js/xfa_simpleexpression.cpp |
@@ -541,7 +541,10 @@ void CXFA_FMCallExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
uint32_t methodPara = IsMethodWithObjParam(funcName.AsStringC()); |
if (methodPara > 0) { |
for (int i = 0; i < m_pArguments->GetSize(); ++i) { |
- if ((methodPara & (0x01 << i)) > 0) { |
+ // Currently none of our expressions use objects for a parameter over |
+ // the 6th. Make sure we don't overflow the shift when doing this |
+ // check. If we ever need more the 32 object params we can revisit. |
+ if (i < 32 && (methodPara & (0x01 << i)) > 0) { |
javascript << gs_lpStrExpFuncName[GETFMJSOBJ]; |
} else { |
javascript << gs_lpStrExpFuncName[GETFMVALUE]; |