From 28cc9746a9639ac14d3f6816b7fbf59cacbb42f4 Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Thu, 25 Oct 2018 22:48:03 +0200 Subject: Change kScInterpreterMaxStrLen now result string length limit to 256MB This is arbitrary. Change-Id: I88875e674464984c174e27fa6038080cc7366ecf Reviewed-on: https://gerrit.libreoffice.org/62375 Reviewed-by: Eike Rathke Tested-by: Jenkins --- sc/source/core/inc/interpre.hxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'sc') diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx index 85f96435ba9a..c7bcfb9a7d91 100644 --- a/sc/source/core/inc/interpre.hxx +++ b/sc/source/core/inc/interpre.hxx @@ -91,7 +91,8 @@ class SharedStringPool; } -constexpr sal_Int32 kScInterpreterMaxStrLen = SAL_MAX_UINT16; +/// Arbitrary 256MB result string length limit. +constexpr sal_Int32 kScInterpreterMaxStrLen = SAL_MAX_INT32 / 8; #define MAXSTACK (4096 / sizeof(formula::FormulaToken*)) @@ -1102,7 +1103,7 @@ inline sal_Int32 ScInterpreter::GetStringPositionArgument() inline bool ScInterpreter::CheckStringResultLen( OUString& rResult, const OUString& rAdd ) { - if ( rResult.getLength() + rAdd.getLength() > kScInterpreterMaxStrLen ) + if (rAdd.getLength() > kScInterpreterMaxStrLen - rResult.getLength()) { SetError( FormulaError::StringOverflow ); rResult.clear(); -- cgit