Program: 100883
Project: 100883
Buggy source:
private void parseAndValidateInput(AbstractPipelineInput input) throws DITAOTException {
  StringTokenizer tokenizer=null;
  Properties prop=new Properties();
  String outputRoot=null;
  int lastIndexOfDot;
  String ditalist;
  Properties params=new Properties();
  PipelineHashIO hashIO=(PipelineHashIO)input;
  String baseDir=hashIO.getAttribute(Constants.ANT_INVOKER_PARAM_BASEDIR);
  String tempDir=((PipelineHashIO)input).getAttribute(Constants.ANT_INVOKER_PARAM_TEMPDIR);
  String output=hashIO.getAttribute(Constants.ANT_INVOKER_EXT_PARAM_OUTPUT);
  String encoding=hashIO.getAttribute(Constants.ANT_INVOKER_EXT_PARAM_ENCODING);
  String indextype=hashIO.getAttribute(Constants.ANT_INVOKER_EXT_PARAM_INDEXTYPE);
  inputMap=hashIO.getAttribute(Constants.ANT_INVOKER_PARAM_INPUTMAP);
  targetExt=hashIO.getAttribute(Constants.ANT_INVOKER_EXT_PARAM_TARGETEXT);
  if (!new File(tempDir).isAbsolute()) {
    tempDir=new File(baseDir,tempDir).getAbsolutePath();
  }
  if (!new File(output).isAbsolute()) {
    output=new File(baseDir,output).getAbsolutePath();
  }
  baseInputDir=tempDir;
  ditalist=new File(tempDir,"String_Node_Str").getAbsolutePath();
  try {
    prop.load(new FileInputStream(ditalist));
  }
 catch (  Exception e) {
    String msg=null;
    params.put("String_Node_Str",ditalist);
    msg=MessageUtils.getMessage("String_Node_Str",params).toString();
    msg=new StringBuffer(msg).append(Constants.LINE_SEPARATOR).append(e.toString()).toString();
    throw new DITAOTException(msg,e);
  }
  tokenizer=new StringTokenizer(prop.getProperty(Constants.FULL_DITA_TOPIC_LIST),Constants.COMMA);
  topicList=new ArrayList(tokenizer.countTokens());
  while (tokenizer.hasMoreTokens()) {
    topicList.add(tokenizer.nextToken());
  }
  tokenizer=new StringTokenizer(prop.getProperty(Constants.FULL_DITAMAP_LIST),Constants.COMMA);
  ditamapList=new ArrayList(tokenizer.countTokens());
  while (tokenizer.hasMoreTokens()) {
    ditamapList.add(tokenizer.nextToken());
  }
  lastIndexOfDot=output.lastIndexOf("String_Node_Str");
  outputRoot=(lastIndexOfDot == -1) ? output : output.substring(0,lastIndexOfDot);
  IndexTermCollection.getInstantce().setOutputFileRoot(outputRoot);
  IndexTermCollection.getInstantce().setIndexType(indextype);
  if (encoding != null && encoding.trim().length() > 0) {
    Locale locale=new Locale(encoding.substring(0,2),encoding.substring(3,5));
    IndexTerm.setTermLocale(locale);
  }
}

Fixed version (ground truth):
private void parseAndValidateInput(AbstractPipelineInput input) throws DITAOTException {
  StringTokenizer tokenizer=null;
  Properties prop=new Properties();
  String outputRoot=null;
  int lastIndexOfDot;
  String ditalist;
  Properties params=new Properties();
  PipelineHashIO hashIO=(PipelineHashIO)input;
  String baseDir=hashIO.getAttribute(Constants.ANT_INVOKER_PARAM_BASEDIR);
  String tempDir=((PipelineHashIO)input).getAttribute(Constants.ANT_INVOKER_PARAM_TEMPDIR);
  String output=hashIO.getAttribute(Constants.ANT_INVOKER_EXT_PARAM_OUTPUT);
  String encoding=hashIO.getAttribute(Constants.ANT_INVOKER_EXT_PARAM_ENCODING);
  String indextype=hashIO.getAttribute(Constants.ANT_INVOKER_EXT_PARAM_INDEXTYPE);
  inputMap=hashIO.getAttribute(Constants.ANT_INVOKER_PARAM_INPUTMAP);
  targetExt=hashIO.getAttribute(Constants.ANT_INVOKER_EXT_PARAM_TARGETEXT);
  if (!new File(tempDir).isAbsolute()) {
    tempDir=new File(baseDir,tempDir).getAbsolutePath();
  }
  if (!new File(output).isAbsolute()) {
    output=new File(baseDir,output).getAbsolutePath();
  }
  baseInputDir=tempDir;
  ditalist=new File(tempDir,"String_Node_Str").getAbsolutePath();
  try {
    prop.load(new FileInputStream(ditalist));
  }
 catch (  Exception e) {
    String msg=null;
    params.put("String_Node_Str",ditalist);
    msg=MessageUtils.getMessage("String_Node_Str",params).toString();
    msg=new StringBuffer(msg).append(Constants.LINE_SEPARATOR).append(e.toString()).toString();
    throw new DITAOTException(msg,e);
  }
  tokenizer=new StringTokenizer(prop.getProperty(Constants.FULL_DITA_TOPIC_LIST),Constants.COMMA);
  topicList=new ArrayList(tokenizer.countTokens());
  while (tokenizer.hasMoreTokens()) {
    topicList.add(tokenizer.nextToken());
  }
  tokenizer=new StringTokenizer(prop.getProperty(Constants.FULL_DITAMAP_LIST),Constants.COMMA);
  ditamapList=new ArrayList(tokenizer.countTokens());
  while (tokenizer.hasMoreTokens()) {
    ditamapList.add(tokenizer.nextToken());
  }
  lastIndexOfDot=output.lastIndexOf("String_Node_Str");
  outputRoot=(lastIndexOfDot == -1) ? output : output.substring(0,lastIndexOfDot);
  IndexTermCollection.getInstantce().setOutputFileRoot(outputRoot);
  IndexTermCollection.getInstantce().setIndexType(indextype);
  if (encoding != null && encoding.trim().length() > 0) {
    IndexTerm.setTermLocale(StringUtils.getLocale(encoding));
  }
}