Program: 10678
Project: 10678
Buggy source:
@Override public void start(){
  super.start();
  isKmsRemote=!wsUri.contains("String_Node_Str") && !wsUri.contains("String_Node_Str") && !isKmsDocker;
  isKmsDocker=KMS_SCOPE_DOCKER.equals(getProperty(KMS_SCOPE_PROP,KMS_SCOPE_DEFAULT));
  String kmsLogin=getProperty(kmsLoginProp);
  String kmsPasswd=getProperty(kmsPasswdProp);
  String kmsPem=getProperty(kmsPemProp);
  if (isKmsRemote && kmsLogin == null && (kmsPem == null || kmsPasswd == null)) {
    String kmsAutoStart=getProperty(kmsAutostartProp,kmsAutostartDefault);
    throw new KurentoException("String_Node_Str" + kmsAutostartProp + "String_Node_Str"+ kmsAutoStart+ "String_Node_Str"+ kmsWsUriProp+ "String_Node_Str"+ wsUri+ "String_Node_Str"+ kmsLoginProp+ "String_Node_Str"+ kmsLogin+ "String_Node_Str"+ kmsPasswdProp+ "String_Node_Str"+ kmsPasswd+ "String_Node_Str"+ kmsPemProp+ "String_Node_Str"+ kmsPem);
  }
  if (!isKmsDocker && !isKmsRemote && !isFreePort(wsUri)) {
    throw new KurentoException("String_Node_Str" + wsUri + "String_Node_Str");
  }
  if (isKmsDocker) {
    log.info("String_Node_Str");
    Docker dockerClient=Docker.getSingleton();
    if (dockerClient.isRunningInContainer()) {
      setDockerContainerName(dockerClient.getContainerName() + "String_Node_Str");
    }
  }
 else {
    log.info("String_Node_Str",wsUri);
    try {
      workspace=Files.createTempDirectory("String_Node_Str");
    }
 catch (    IOException e) {
      throw new KurentoException("String_Node_Str",e);
    }
    log.trace("String_Node_Str",workspace);
    createKurentoConf();
  }
  if (isKmsRemote) {
    String remoteKmsStr=wsUri.substring(wsUri.indexOf("String_Node_Str") + 2,wsUri.lastIndexOf("String_Node_Str"));
    log.info("String_Node_Str",remoteKmsStr);
    remoteKmsSshConnection=new SshConnection(remoteKmsStr,kmsLogin,kmsPasswd,kmsPem);
    if (kmsPem != null) {
      remoteKmsSshConnection.setPem(kmsPem);
    }
    remoteKmsSshConnection.start();
    remoteKmsSshConnection.createTmpFolder();
    String[] filesToBeCopied={"String_Node_Str","String_Node_Str"};
    for (    String s : filesToBeCopied) {
      remoteKmsSshConnection.scp(workspace + File.separator + s,remoteKmsSshConnection.getTmpFolder() + File.separator + s);
    }
    remoteKmsSshConnection.runAndWaitCommand("String_Node_Str","String_Node_Str",remoteKmsSshConnection.getTmpFolder() + File.separator + "String_Node_Str");
  }
  startKms();
  waitForKms();
}

Fixed version (ground truth):
@Override public void start(){
  super.start();
  if (wsUri == null) {
    isKmsStarted=false;
    return;
  }
  isKmsRemote=!wsUri.contains("String_Node_Str") && !wsUri.contains("String_Node_Str") && !isKmsDocker;
  isKmsDocker=KMS_SCOPE_DOCKER.equals(getProperty(KMS_SCOPE_PROP,KMS_SCOPE_DEFAULT));
  String kmsLogin=getProperty(kmsLoginProp);
  String kmsPasswd=getProperty(kmsPasswdProp);
  String kmsPem=getProperty(kmsPemProp);
  if (isKmsRemote && kmsLogin == null && (kmsPem == null || kmsPasswd == null)) {
    String kmsAutoStart=getProperty(kmsAutostartProp,kmsAutostartDefault);
    throw new KurentoException("String_Node_Str" + kmsAutostartProp + "String_Node_Str"+ kmsAutoStart+ "String_Node_Str"+ kmsWsUriProp+ "String_Node_Str"+ wsUri+ "String_Node_Str"+ kmsLoginProp+ "String_Node_Str"+ kmsLogin+ "String_Node_Str"+ kmsPasswdProp+ "String_Node_Str"+ kmsPasswd+ "String_Node_Str"+ kmsPemProp+ "String_Node_Str"+ kmsPem);
  }
  if (!isKmsDocker && !isKmsRemote && !isFreePort(wsUri)) {
    throw new KurentoException("String_Node_Str" + wsUri + "String_Node_Str");
  }
  if (isKmsDocker) {
    log.info("String_Node_Str");
    Docker dockerClient=Docker.getSingleton();
    if (dockerClient.isRunningInContainer()) {
      setDockerContainerName(dockerClient.getContainerName() + "String_Node_Str");
    }
  }
 else {
    log.info("String_Node_Str",wsUri);
    try {
      workspace=Files.createTempDirectory("String_Node_Str");
    }
 catch (    IOException e) {
      throw new KurentoException("String_Node_Str",e);
    }
    log.trace("String_Node_Str",workspace);
    createKurentoConf();
  }
  if (isKmsRemote) {
    String remoteKmsStr=wsUri.substring(wsUri.indexOf("String_Node_Str") + 2,wsUri.lastIndexOf("String_Node_Str"));
    log.info("String_Node_Str",remoteKmsStr);
    remoteKmsSshConnection=new SshConnection(remoteKmsStr,kmsLogin,kmsPasswd,kmsPem);
    if (kmsPem != null) {
      remoteKmsSshConnection.setPem(kmsPem);
    }
    remoteKmsSshConnection.start();
    remoteKmsSshConnection.createTmpFolder();
    String[] filesToBeCopied={"String_Node_Str","String_Node_Str"};
    for (    String s : filesToBeCopied) {
      remoteKmsSshConnection.scp(workspace + File.separator + s,remoteKmsSshConnection.getTmpFolder() + File.separator + s);
    }
    remoteKmsSshConnection.runAndWaitCommand("String_Node_Str","String_Node_Str",remoteKmsSshConnection.getTmpFolder() + File.separator + "String_Node_Str");
  }
  startKms();
  waitForKms();
}