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,