cppu/source/uno/EnvStack.cxx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
New commits: commit 1ad6f436b5cd937dfc9d91c284920efddd6ad185 Author: Herbert Dürr <[email protected]> Date: Thu May 2 09:24:10 2013 +0000 protect UNO EnvStack's s_setCurrent() against unknown threadid untracked threadIds have been observed and can result in crashes. s_getCurrent() already checks them and s_setCurrent() does it now. (cherry picked from commit bf8e3135ac906ce0ab7d6d9ccbd434f1597f2ff4) Conflicts: cppu/source/uno/EnvStack.cxx Change-Id: If35237179c1ee3b854e6183294ed72a6d0b105a8 diff --git a/cppu/source/uno/EnvStack.cxx b/cppu/source/uno/EnvStack.cxx index cafd4fe..22d7bd9 100644 --- a/cppu/source/uno/EnvStack.cxx +++ b/cppu/source/uno/EnvStack.cxx @@ -74,10 +74,15 @@ static void s_setCurrent(uno_Environment * pEnv) osl::MutexGuard guard(s_threadMap_mutex::get()); ThreadMap &rThreadMap = s_threadMap::get(); if (pEnv) + { rThreadMap[threadId] = pEnv; - + } else - rThreadMap.erase(threadId); + { + ThreadMap::iterator iEnv = rThreadMap.find(threadId); + if( iEnv != rThreadMap.end()) + rThreadMap.erase(iEnv); + } } static uno_Environment * s_getCurrent(void)
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
