filter/source/graphicfilter/ieps/ieps.cxx |   22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

New commits:
commit 4054690630f664d341b87c97b018b8c3f9238594
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Tue Jul 9 13:08:23 2024 +0100
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Tue Aug 20 12:08:33 2024 +0200

    use a throwaway TMPDIR for ghostscript-using helpers
    
    Change-Id: Iba5a475399589c9e2c4fd485d613f0dedfe0dc44
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170124
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit b0230fbd68924916ffad47958e0ca87bb532d7e3)

diff --git a/filter/source/graphicfilter/ieps/ieps.cxx 
b/filter/source/graphicfilter/ieps/ieps.cxx
index 65967299e791..29a5c2f9eff8 100644
--- a/filter/source/graphicfilter/ieps/ieps.cxx
+++ b/filter/source/graphicfilter/ieps/ieps.cxx
@@ -154,6 +154,14 @@ static oslProcessError runProcessWithPathSearch(const 
OUString &rProgName,
     rtl_uString* pArgs[], sal_uInt32 nArgs, oslProcess *pProcess,
     oslFileHandle *pIn, oslFileHandle *pOut, oslFileHandle *pErr)
 {
+    // run things that directly or indirectly might call gs in a tmpdir of 
their own
+    utl::TempFile aTMPDirectory(nullptr, true);
+    aTMPDirectory.EnableKillingFile(true);
+    OUString sTmpDirEnv = "TMPDIR=" + aTMPDirectory.GetFileName();
+
+    rtl_uString* ustrEnvironment[1];
+    ustrEnvironment[0] = sTmpDirEnv.pData;
+
     oslProcessError result = osl_Process_E_None;
     oslSecurity pSecurity = osl_getCurrentSecurity();
 #ifdef _WIN32
@@ -181,11 +189,11 @@ static oslProcessError runProcessWithPathSearch(const 
OUString &rProgName,
     else
         result = osl_executeProcess_WithRedirectedIO(url.pData,
             pArgs, nArgs, osl_Process_HIDDEN,
-            pSecurity, nullptr, nullptr, 0, pProcess, pIn, pOut, pErr);
+            pSecurity, nullptr, ustrEnvironment, 1, pProcess, pIn, pOut, pErr);
 #else
     result = osl_executeProcess_WithRedirectedIO(rProgName.pData,
         pArgs, nArgs, osl_Process_SEARCHPATH | osl_Process_HIDDEN,
-        pSecurity, nullptr, nullptr, 0, pProcess, pIn, pOut, pErr);
+        pSecurity, nullptr, ustrEnvironment, 1, pProcess, pIn, pOut, pErr);
 #endif
     osl_freeSecurityHandle( pSecurity );
     return result;
commit 09948d18ec3646ac8dbd180343283dbc593861b5
Author:     Julien Nabet <serval2...@yahoo.fr>
AuthorDate: Mon May 18 13:41:31 2020 +0200
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Tue Aug 20 12:03:06 2024 +0200

    fix potential leak in runProcessWithPathSearch (filter/ieps)
    
    Change-Id: Ifa1d3c7aba95aa0800d6d0481d0258367ac1317a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94417
    Tested-by: Jenkins
    Reviewed-by: Julien Nabet <serval2...@yahoo.fr>
    (cherry picked from commit 835bced249e95ccbf0a88266f8c1ba166cf5efcb)

diff --git a/filter/source/graphicfilter/ieps/ieps.cxx 
b/filter/source/graphicfilter/ieps/ieps.cxx
index 39c2d1fe784d..65967299e791 100644
--- a/filter/source/graphicfilter/ieps/ieps.cxx
+++ b/filter/source/graphicfilter/ieps/ieps.cxx
@@ -154,7 +154,7 @@ static oslProcessError runProcessWithPathSearch(const 
OUString &rProgName,
     rtl_uString* pArgs[], sal_uInt32 nArgs, oslProcess *pProcess,
     oslFileHandle *pIn, oslFileHandle *pOut, oslFileHandle *pErr)
 {
-    oslProcessError result;
+    oslProcessError result = osl_Process_E_None;
     oslSecurity pSecurity = osl_getCurrentSecurity();
 #ifdef _WIN32
     /*
@@ -177,11 +177,11 @@ 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;
-
-    result = osl_executeProcess_WithRedirectedIO(url.pData,
-    pArgs, nArgs, osl_Process_HIDDEN,
-        pSecurity, nullptr, nullptr, 0, pProcess, pIn, pOut, pErr);
+        result = osl_Process_E_NotFound;
+    else
+        result = osl_executeProcess_WithRedirectedIO(url.pData,
+            pArgs, nArgs, osl_Process_HIDDEN,
+            pSecurity, nullptr, nullptr, 0, pProcess, pIn, pOut, pErr);
 #else
     result = osl_executeProcess_WithRedirectedIO(rProgName.pData,
         pArgs, nArgs, osl_Process_SEARCHPATH | osl_Process_HIDDEN,

Reply via email to