]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
Use "/var/run" or "/run" instead of "/tmp" in Linux guest for imc package copy
authorOliver Kurth <okurth@vmware.com>
Wed, 20 Jun 2018 00:07:51 +0000 (17:07 -0700)
committerOliver Kurth <okurth@vmware.com>
Wed, 20 Jun 2018 00:07:51 +0000 (17:07 -0700)
1. check if /var/run is a directory in VM
2. if Yes, use /var/run/XXXXXX
3. check if /run is a directory in VM
4. if Yes, use /run/XXXXXX
5. if both No, use /tmp/XXXXXX as before

open-vm-tools/services/plugins/deployPkg/deployPkg.c

index 7c6a8affe2e8360d6779c35b1d96779554fe9bd0..63754486a2fb966c460a62d4bffeeea9d8ef3fd0 100644 (file)
@@ -325,12 +325,34 @@ DeployPkgGetTempDir(void)
    char *dir = NULL;
    char *newDir = NULL;
    Bool found = FALSE;
+#ifndef _WIN32
+   /*
+    * PR 2115630. On Linux, use /var/run or /run directory
+    * to hold the package.
+    */
+   const char *runDir = "/run";
+   const char *varRunDir = "/var/run";
+
+   if (File_IsDirectory(varRunDir)) {
+      dir = strdup(varRunDir);
+      if (dir == NULL) {
+         g_warning("%s: strdup failed\n", __FUNCTION__);
+         goto exit;
+      }
+   } else if (File_IsDirectory(runDir)) {
+      dir = strdup(runDir);
+      if (dir == NULL) {
+         g_warning("%s: strdup failed\n", __FUNCTION__);
+         goto exit;
+      }
+   }
+#endif
 
    /*
     * Get system temporary directory.
     */
 
-   if ((dir = File_GetSafeRandomTmpDir(TRUE)) == NULL) {
+   if (dir == NULL && (dir = File_GetSafeRandomTmpDir(TRUE)) == NULL) {
       g_warning("%s: File_GetSafeRandomTmpDir failed\n", __FUNCTION__);
       goto exit;
    }