Change in core[libreoffice-4-0-0]: Do not call putenv with a temporary string argument

Stephan Bergmann (via Code Review) gerrit at gerrit.libreoffice.org
Tue Jan 29 04:37:54 PST 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/1918

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/18/1918/1

Do not call putenv with a temporary string argument

These bad calls to putenv suddenly caused the buildIdFile string (macro-expanded
from bootstraprc's UserInstallation) in cleanExtensionCache
(desktop/source/app/app.cxx) to contain nonsense at least in a local
libreoffice-4-0-0 of mine, as getenv("UserInstallation") started to return some
non-null pointer pointing to garbage.

Change-Id: Ib93fd4e1caef016bd0e00bf09800b9532824ac4b
(cherry picked from commit d841273ba54b173020aa8da18ba7841cf950c13c)
---
M vcl/aqua/source/app/salinst.cxx
1 file changed, 6 insertions(+), 10 deletions(-)



diff --git a/vcl/aqua/source/app/salinst.cxx b/vcl/aqua/source/app/salinst.cxx
index 90a3fa7..0a08788 100644
--- a/vcl/aqua/source/app/salinst.cxx
+++ b/vcl/aqua/source/app/salinst.cxx
@@ -306,7 +306,6 @@
             rtl::OString aResPath( getenv( "STAR_RESOURCEPATH" ) );
             rtl::OString aLibPath( getenv( "DYLD_LIBRARY_PATH" ) );
             rtl::OString aCmdPath( OUStringToOString(OUString(sysWorkDir), RTL_TEXTENCODING_UTF8).getStr() );
-            rtl::OString aTmpPath;
             // Get absolute path of command's directory
             if ( !aCmdPath.isEmpty() ) {
                 DirEntry aCmdDirEntry( aCmdPath );
@@ -316,32 +315,29 @@
             // Assign to PATH environment variable
             if ( !aCmdPath.isEmpty() )
             {
-                aTmpPath = rtl::OString( "PATH=" );
-                aTmpPath += aCmdPath;
+                rtl::OString aTmpPath( aCmdPath );
                 if ( !aPath.isEmpty() )
                     aTmpPath += rtl::OUStringToOString( DirEntry::GetSearchDelimiter(), RTL_TEXTENCODING_ASCII_US );
                 aTmpPath += aPath;
-                putenv( (char*)aTmpPath.getStr() );
+                setenv( "PATH", aTmpPath.getStr(), 1 );
             }
             // Assign to STAR_RESOURCEPATH environment variable
             if ( !aCmdPath.isEmpty() )
             {
-                aTmpPath = rtl::OString( "STAR_RESOURCEPATH=" );
-                aTmpPath += aCmdPath;
+                rtl::OString aTmpPath( aCmdPath );
                 if ( !aResPath.isEmpty() )
                     aTmpPath += rtl::OUStringToOString( DirEntry::GetSearchDelimiter(), RTL_TEXTENCODING_ASCII_US );
                 aTmpPath += aResPath;
-                putenv( (char*)aTmpPath.getStr() );
+                setenv( "STAR_RESOURCEPATH", aTmpPath.getStr(), 1 );
             }
             // Assign to DYLD_LIBRARY_PATH environment variable
             if ( !aCmdPath.isEmpty() )
             {
-                aTmpPath = rtl::OString( "DYLD_LIBRARY_PATH=" );
-                aTmpPath += aCmdPath;
+                rtl::OString aTmpPath( aCmdPath );
                 if ( !aLibPath.isEmpty() )
                     aTmpPath += rtl::OUStringToOString( DirEntry::GetSearchDelimiter(), RTL_TEXTENCODING_ASCII_US );
                 aTmpPath += aLibPath;
-                putenv( (char*)aTmpPath.getStr() );
+                setenv( "DYLD_LIBRARY_PATH", aTmpPath.getStr(), 1 );
             }
         }
     }

-- 
To view, visit https://gerrit.libreoffice.org/1918
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib93fd4e1caef016bd0e00bf09800b9532824ac4b
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: libreoffice-4-0-0
Gerrit-Owner: Stephan Bergmann <sbergman at redhat.com>


More information about the LibreOffice mailing list