diff -rup open-vm-tools-stable-10.2.0/open-vm-tools/libDeployPkg/linuxDeployment.c open-vm-tools-stable-10.2.0-modified/open-vm-tools/libDeployPkg/linuxDeployment.c
--- open-vm-tools-stable-10.2.0/open-vm-tools/libDeployPkg/linuxDeployment.c	2017-12-15 13:11:49.000000000 -0800
+++ open-vm-tools-stable-10.2.0-modified/open-vm-tools/libDeployPkg/linuxDeployment.c	2018-03-21 15:36:36.512716686 -0700
@@ -593,13 +593,17 @@ GetPackageInfo(const char* packageName,
    close(fd);
 
    // 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;
    }
 
-   memcpy(*command, hdr.command, VMWAREDEPLOYPKG_CMD_LENGTH);
+   // will pad with '\0' if necessary
+   strncpy(*command, hdr.command, VMWAREDEPLOYPKG_CMD_LENGTH);
+   // hdr.command is a structure of fixed length VMWAREDEPLOYPKG_CMD_LENGTH
+   (*command)[VMWAREDEPLOYPKG_CMD_LENGTH] = '\0';
+
    *archiveType = hdr.payloadType;
    *flags = hdr.reserved;
 
@@ -1190,6 +1194,19 @@ Deploy(const char* packageName)
       free(command);
       deployStatus =  CloudInitSetup(tmpDirPath);
    } else {
+       if ((strstr(command, "scripts/Customize.pl") != NULL) || (strstr(command, "scripts/customize.sh") != NULL)) {
+          free (command);
+          char PHOTON_OS_LAUNCH_COMMAND[256];
+          sprintf(PHOTON_OS_LAUNCH_COMMAND, "/bin/bash /usr/share/open-vm-tools/GOSC/gosc-scripts/imc-shell/imgcust-scripts/customize.sh %s/cust.cfg", tmpDirPath);
+
+          // The command will be parsed alter and can be of arbitrary length
+          command = strdup(PHOTON_OS_LAUNCH_COMMAND);
+          if (!command) {
+             SetDeployError("Error allocating memory.");
+             return DEPLOY_ERROR;
+          }
+          _DeployPkg_SkipReboot(true);
+      }
       sLog(log_info, "Executing traditional GOSC workflow");
       deploymentResult = ForkExecAndWaitCommand(command);
       free(command);