Rare, but an app might toggle addPid; cover this. Also optimize the
cache update.
}
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: