[Libreoffice-commits] core.git: filter/source sal/osl sal/qa sal/workben sdext/source

Mark Wielaard mark at klomp.org
Wed Jul 17 03:57:43 PDT 2013


 filter/source/graphicfilter/ieps/ieps.cxx  |   13 +++++++++----
 sal/osl/unx/file_url.cxx                   |    4 +++-
 sal/qa/osl/process/osl_process.cxx         |   16 ++++++++++++----
 sal/workben/t_osl_joinProcess.cxx          |   16 ++++++++++++----
 sdext/source/pdfimport/wrapper/wrapper.cxx |    4 +++-
 5 files changed, 39 insertions(+), 14 deletions(-)

New commits:
commit cae861f0b32e01cb775214d783c98255acb60af0
Author: Mark Wielaard <mark at klomp.org>
Date:   Wed Jul 17 12:11:26 2013 +0200

    Fix memory leak with osl_getCurrentSecurity ().
    
    The result of osl_getCurrentSecurity () should always be deleted again
    with osl_freeSecurityHandle ().
    
    Change-Id: If0991937fcb24207d1f78166f61c4be22d423629
    Reviewed-on: https://gerrit.libreoffice.org/4947
    Reviewed-by: David Tardon <dtardon at redhat.com>
    Tested-by: David Tardon <dtardon at redhat.com>

diff --git a/filter/source/graphicfilter/ieps/ieps.cxx b/filter/source/graphicfilter/ieps/ieps.cxx
index c857b3f..61f13ce 100644
--- a/filter/source/graphicfilter/ieps/ieps.cxx
+++ b/filter/source/graphicfilter/ieps/ieps.cxx
@@ -149,6 +149,8 @@ static oslProcessError runProcessWithPathSearch(const OUString &rProgName,
     rtl_uString* pArgs[], sal_uInt32 nArgs, oslProcess *pProcess,
     oslFileHandle *pIn, oslFileHandle *pOut, oslFileHandle *pErr)
 {
+    oslProcessError result;
+    oslSecurity pSecurity = osl_getCurrentSecurity();
 #ifdef WNT
     /*
      * ooo#72096
@@ -171,14 +173,17 @@ static oslProcessError runProcessWithPathSearch(const OUString &rProgName,
     oslFileError err = osl_searchFileURL(rProgName.pData, path.pData, &url.pData);
     if (err != osl_File_E_None)
         return osl_Process_E_NotFound;
-    return osl_executeProcess_WithRedirectedIO(url.pData,
+
+    result = osl_executeProcess_WithRedirectedIO(url.pData,
     pArgs, nArgs, osl_Process_HIDDEN,
-        osl_getCurrentSecurity(), 0, 0, 0, pProcess, pIn, pOut, pErr);
+        pSecurity, 0, 0, 0, pProcess, pIn, pOut, pErr);
 #else
-    return osl_executeProcess_WithRedirectedIO(rProgName.pData,
+    result = osl_executeProcess_WithRedirectedIO(rProgName.pData,
         pArgs, nArgs, osl_Process_SEARCHPATH | osl_Process_HIDDEN,
-        osl_getCurrentSecurity(), 0, 0, 0, pProcess, pIn, pOut, pErr);
+        pSecurity, 0, 0, 0, pProcess, pIn, pOut, pErr);
 #endif
+    osl_freeSecurityHandle( pSecurity );
+    return result;
 }
 
 #if defined(WNT)
diff --git a/sal/osl/unx/file_url.cxx b/sal/osl/unx/file_url.cxx
index 03de113..304f8b4 100644
--- a/sal/osl/unx/file_url.cxx
+++ b/sal/osl/unx/file_url.cxx
@@ -259,7 +259,9 @@ oslFileError SAL_CALL osl_getSystemPathFromFileURL( rtl_uString *ustrFileURL, rt
             rtl_uString *pTmp2 = NULL;
 
             /* osl_getHomeDir returns file URL */
-            osl_getHomeDir( osl_getCurrentSecurity(), &pTmp2 );
+            oslSecurity pSecurity = osl_getCurrentSecurity();
+            osl_getHomeDir( pSecurity , &pTmp2 );
+            osl_freeSecurityHandle( pSecurity );
 
             /* remove "file://" prefix */
             rtl_uString_newFromStr_WithLength( &pTmp2, pTmp2->buffer + 7, pTmp2->length - 7 );
diff --git a/sal/qa/osl/process/osl_process.cxx b/sal/qa/osl/process/osl_process.cxx
index f095676..5dcd555 100644
--- a/sal/qa/osl/process/osl_process.cxx
+++ b/sal/qa/osl/process/osl_process.cxx
@@ -138,16 +138,18 @@ public:
     void osl_joinProcessWithTimeout_timeout_failure()
     {
         oslProcess process;
+        oslSecurity security = osl_getCurrentSecurity();
         oslProcessError osl_error = osl_executeProcess(
             suExecutableFileURL.pData,
             parameters_,
             parameters_count_,
             osl_Process_NORMAL,
-            osl_getCurrentSecurity(),
+            security,
             suCWD.pData,
             NULL,
             0,
             &process);
+        osl_freeSecurityHandle(security);
 
         CPPUNIT_ASSERT_EQUAL_MESSAGE
         (
@@ -188,16 +190,18 @@ public:
     void osl_joinProcessWithTimeout_without_timeout_failure()
     {
         oslProcess process;
+        oslSecurity security = osl_getCurrentSecurity ();
         oslProcessError osl_error = osl_executeProcess(
             suExecutableFileURL.pData,
             parameters_,
             parameters_count_,
             osl_Process_NORMAL,
-            osl_getCurrentSecurity(),
+            security,
             suCWD.pData,
             NULL,
             0,
             &process);
+        osl_freeSecurityHandle(security);
 
         CPPUNIT_ASSERT_EQUAL_MESSAGE
         (
@@ -228,16 +232,18 @@ public:
     void osl_joinProcessWithTimeout_infinite()
     {
         oslProcess process;
+        oslSecurity security = osl_getCurrentSecurity ();
         oslProcessError osl_error = osl_executeProcess(
             suExecutableFileURL.pData,
             parameters_,
             parameters_count_,
             osl_Process_NORMAL,
-            osl_getCurrentSecurity(),
+            security,
             suCWD.pData,
             NULL,
             0,
             &process);
+        osl_freeSecurityHandle(security);
 
         CPPUNIT_ASSERT_EQUAL_MESSAGE
         (
@@ -264,16 +270,18 @@ public:
      void osl_joinProcess()
     {
         oslProcess process;
+        oslSecurity security = osl_getCurrentSecurity ();
         oslProcessError osl_error = osl_executeProcess(
             suExecutableFileURL.pData,
             parameters_,
             parameters_count_,
             osl_Process_NORMAL,
-            osl_getCurrentSecurity(),
+            security,
             suCWD.pData,
             NULL,
             0,
             &process);
+        osl_freeSecurityHandle(security);
 
         CPPUNIT_ASSERT_EQUAL_MESSAGE
         (
diff --git a/sal/workben/t_osl_joinProcess.cxx b/sal/workben/t_osl_joinProcess.cxx
index 8f3497d..d043c5e 100644
--- a/sal/workben/t_osl_joinProcess.cxx
+++ b/sal/workben/t_osl_joinProcess.cxx
@@ -46,16 +46,18 @@ public:
     void test_osl_joinProcessWithTimeout_timeout_failure()
     {
         oslProcess process;
+        oslSecurity security = osl_getCurrentSecurity();
         oslProcessError osl_error = osl_executeProcess(
             IMAGE_NAME.pData,
             NULL,
             0,
             osl_Process_NORMAL,
-            osl_getCurrentSecurity(),
+            security,
             CWD.pData,
             NULL,
             0,
             &process);
+        osl_freeSecurityHandle(security);
 
         CPPUNIT_ASSERT_MESSAGE
         (
@@ -96,16 +98,18 @@ public:
     void test_osl_joinProcessWithTimeout_without_timeout_failure()
     {
         oslProcess process;
+        oslSecurity security = osl_getCurrentSecurity();
         oslProcessError osl_error = osl_executeProcess(
             IMAGE_NAME.pData,
             NULL,
             0,
             osl_Process_NORMAL,
-            osl_getCurrentSecurity(),
+            security,
             CWD.pData,
             NULL,
             0,
             &process);
+        osl_freeSecurityHandle(security);
 
         CPPUNIT_ASSERT_MESSAGE
         (
@@ -136,16 +140,18 @@ public:
     void test_osl_joinProcessWithTimeout_infinite()
     {
         oslProcess process;
+        oslSecurity security = osl_getCurrentSecurity();
         oslProcessError osl_error = osl_executeProcess(
             IMAGE_NAME.pData,
             NULL,
             0,
             osl_Process_NORMAL,
-            osl_getCurrentSecurity(),
+            security,
             CWD.pData,
             NULL,
             0,
             &process);
+        osl_freeSecurityHandle(security);
 
         CPPUNIT_ASSERT_MESSAGE
         (
@@ -172,16 +178,18 @@ public:
      void test_osl_joinProcess()
     {
         oslProcess process;
+        oslSecurity security = osl_getCurrentSecurity();
         oslProcessError osl_error = osl_executeProcess(
             IMAGE_NAME.pData,
             NULL,
             0,
             osl_Process_NORMAL,
-            osl_getCurrentSecurity(),
+            security,
             CWD.pData,
             NULL,
             0,
             &process);
+        osl_freeSecurityHandle(security);
 
         CPPUNIT_ASSERT_MESSAGE
         (
diff --git a/sdext/source/pdfimport/wrapper/wrapper.cxx b/sdext/source/pdfimport/wrapper/wrapper.cxx
index 2adae20..98c39e2 100644
--- a/sdext/source/pdfimport/wrapper/wrapper.cxx
+++ b/sdext/source/pdfimport/wrapper/wrapper.cxx
@@ -1083,14 +1083,16 @@ bool xpdf_ImportFromFile( const OUString&                             rURL,
     oslFileHandle pIn  = NULL;
     oslFileHandle pOut = NULL;
     oslFileHandle pErr = NULL;
+    oslSecurity pSecurity = osl_getCurrentSecurity ();
     const oslProcessError eErr =
         osl_executeProcess_WithRedirectedIO(converterURL.pData,
                                             args,
                                             nArgs,
                                             osl_Process_SEARCHPATH|osl_Process_HIDDEN,
-                                            osl_getCurrentSecurity(),
+                                            pSecurity,
                                             0, ppEnv, nEnv,
                                             &aProcess, &pIn, &pOut, &pErr);
+    osl_freeSecurityHandle(pSecurity);
 
     bool bRet=true;
     try


More information about the Libreoffice-commits mailing list