[Libreoffice-commits] core.git: cppu/source

Herbert Dürr hdu at apache.org
Thu May 9 01:31:06 PDT 2013


 cppu/source/uno/EnvStack.cxx |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

New commits:
commit 1ad6f436b5cd937dfc9d91c284920efddd6ad185
Author: Herbert Dürr <hdu at apache.org>
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)


More information about the Libreoffice-commits mailing list