diff options
author | Tor Lillqvist <tml@collabora.com> | 2015-01-16 14:56:17 +0200 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2015-01-26 09:58:15 +0000 |
commit | 84ec7ada26ce20c546050d2fa9e62cfa6dedb71a (patch) | |
tree | 7c556019a9cca7e54e90e6c72092daa7cdf9c8a5 | |
parent | da443ab58158d2b7ffa52742cec2be76e3aa2026 (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.cxx | 11 |
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"; |