summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2015-01-16 14:56:17 +0200
committerMichael Meeks <michael.meeks@collabora.com>2015-01-26 09:58:15 +0000
commit84ec7ada26ce20c546050d2fa9e62cfa6dedb71a (patch)
tree7c556019a9cca7e54e90e6c72092daa7cdf9c8a5
parentda443ab58158d2b7ffa52742cec2be76e3aa2026 (diff)
fdo#88444: Guard against out-of-bound access libreoffice-4-2-milestone-5-2
Change-Id: Id918934eed1e5221a40e3a04604640fa2b158fe4
-rw-r--r--sc/source/core/opencl/opbase.cxx11
1 files changed, 9 insertions, 2 deletions
diff --git a/sc/source/core/opencl/opbase.cxx b/sc/source/core/opencl/opbase.cxx
index 7589de9a813e..fd6cdfbed5ad 100644
--- a/sc/source/core/opencl/opbase.cxx
+++ b/sc/source/core/opencl/opbase.cxx
@@ -190,13 +190,20 @@ void CheckVariables::CheckSubArgumentIsNan2( std::stringstream & ss,
ss<< " tmp";
ss<< i;
ss<< "= fsum(";
- vSubArguments[i]->GenDeclRef(ss);
if(vSubArguments[i]->GetFormulaToken()->GetType() ==
formula::svDoubleVectorRef)
+ {
+ vSubArguments[i]->GenDeclRef(ss);
ss<<"["<< p.c_str()<< "]";
+ }
else if(vSubArguments[i]->GetFormulaToken()->GetType() ==
formula::svSingleVectorRef)
- ss<<"[get_group_id(1)]";
+ {
+ formula::SingleVectorRefToken *pSVR = dynamic_cast<formula::SingleVectorRefToken*>(vSubArguments[i]->GetFormulaToken());
+ ss<<"(get_group_id(1)<" << pSVR->GetArrayLength() << "?";
+ vSubArguments[i]->GenDeclRef(ss);
+ ss<<"[get_group_id(1)]:0)";
+ }
ss<<", 0);\n";
#else
ss <<" tmp";