SPECS/open-vm-tools/GOSC-libDeploy.patch
a21a47f3
 diff -ru open-vm-tools-stable-10.1.10/open-vm-tools/libDeployPkg/linuxDeployment.c open-vm-tools-stable-10.1.10-modified/open-vm-tools/libDeployPkg/linuxDeployment.c
 --- open-vm-tools-stable-10.1.10/open-vm-tools/libDeployPkg/linuxDeployment.c	2017-07-28 14:59:15.000000000 -0700
 +++ open-vm-tools-stable-10.1.10-modified/open-vm-tools/libDeployPkg/linuxDeployment.c	2017-08-22 12:30:18.862037086 -0700
 @@ -582,13 +582,17 @@
6dcb866d
     close(fd);
a21a47f3
  
6dcb866d
     // Create space and copy the command
 -   *command = malloc(VMWAREDEPLOYPKG_CMD_LENGTH);
 +   *command = malloc(VMWAREDEPLOYPKG_CMD_LENGTH + 1);
     if (!*command) {
        SetDeployError("Error allocating memory.");
        return FALSE;
     }
a21a47f3
  
a57e3903
 -   memcpy(*command, hdr.command, VMWAREDEPLOYPKG_CMD_LENGTH);
6dcb866d
 +   // will pad with '\0' if necessary
 +   strncpy(*command, hdr.command, VMWAREDEPLOYPKG_CMD_LENGTH);
 +   // hdr.command is a structure of fixed length VMWAREDEPLOYPKG_CMD_LENGTH
a57e3903
 +   (*command)[VMWAREDEPLOYPKG_CMD_LENGTH] = '\0';
 +
6dcb866d
     *archiveType = hdr.payloadType;
a57e3903
     *flags = hdr.reserved;
a21a47f3
  
 @@ -1094,6 +1098,20 @@
a57e3903
     } else {
a21a47f3
        sLog(log_info, "cloud-init is either not installed or the flag to enable \
             cloud-init is not set.\n Executing traditional GOSC workflow");
a57e3903
 +      if ((strstr(command, "scripts/Customize.pl") != NULL) || (strstr(command, "scripts/customize.sh") != NULL)) {
 +          free (command);
 +          const char* PHOTON_OS_LAUNCH_COMMAND = "/bin/bash /usr/share/open-vm-tools/GOSC/gosc-scripts/imc-shell/imgcust-scripts/customize.sh /tmp/.vmware/linux/deploy/cust.cfg";
6dcb866d
 +
a57e3903
 +          // The command will be parsed alter and can be of arbitrary length
4a459969
 +          command = StrUtil_ReplaceAll(PHOTON_OS_LAUNCH_COMMAND, TMP_PATH_VAR, tmpDirPath);
a57e3903
 +          if (!command) {
 +             SetDeployError("Error allocating memory.");
 +             return DEPLOY_ERROR;
 +          }
 +          _DeployPkg_SkipReboot(true);
 +      }
4a459969
 +      // Run the deployment command
 +      sLog(log_info, "Launching deployment %s.  \n", command);
a57e3903
        deploymentResult = ForkExecAndWaitCommand(command);
4a459969
        free(command);
a21a47f3