From: Oliver Kurth Date: Mon, 26 Feb 2018 20:29:07 +0000 (-0800) Subject: lib/file: Paranoid clear of old cached values X-Git-Tag: stable-10.3.0~103 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9fb904dbdbd12952f2743d1463cda56a72c50c90;p=thirdparty%2Fopen-vm-tools.git lib/file: Paranoid clear of old cached values Rare, but an app might toggle addPid; cover this. Also optimize the cache update. --- diff --git a/open-vm-tools/lib/file/fileTempPosix.c b/open-vm-tools/lib/file/fileTempPosix.c index 22c627bd3..a3cca3178 100644 --- a/open-vm-tools/lib/file/fileTempPosix.c +++ b/open-vm-tools/lib/file/fileTempPosix.c @@ -566,22 +566,30 @@ FileGetSafeTmpDir(Bool useConf, // IN: Use configuration variables? } if (tmpDir != NULL) { - /* - * We have successfully created a temporary directory, remember it for - * future calls. - */ - - testSafeDir = Util_SafeStrdup(tmpDir); - - if (addPid) { - Posix_Free(cachedPidDir); - cachedPidDir = testSafeDir; + char *newDir = Util_SafeStrdup(tmpDir); + + if (euid == cachedEuid) { + if (addPid) { + Posix_Free(cachedPidDir); + cachedPidDir = newDir; + } else { + Posix_Free(cachedDir); + cachedDir = newDir; + } } else { + Posix_Free(cachedPidDir); Posix_Free(cachedDir); - cachedDir = testSafeDir; - } - cachedEuid = euid; + if (addPid) { + cachedPidDir = newDir; + cachedDir = NULL; + } else { + cachedDir = newDir; + cachedPidDir = NULL; + } + + cachedEuid = euid; + } } exit: