Program: 8843
Project: 8843
Buggy source:
/** 
 * Extract and copy DK II camera sweep files (paths)
 * @param dungeonKeeperFolder DK II main folder
 * @param destination Destination folder
 */
private void convertPaths(String dungeonKeeperFolder,String destination){
  if (!ConvertProcess.PATHS.isOutdated()) {
    return;
  }
  logger.log(Level.INFO,"String_Node_Str",destination);
  updateStatus(null,null,ConvertProcess.PATHS);
  AssetUtils.deleteFolder(new File(destination));
  WadFile wad=new WadFile(new File(dungeonKeeperFolder + PathUtils.DKII_DATA_FOLDER + "String_Node_Str"));
  int i=0;
  int total=wad.getWadFileEntryCount();
  File tmpdir=new File(System.getProperty("String_Node_Str"));
  BinaryExporter exporter=BinaryExporter.getInstance();
  for (  final String entry : wad.getWadFileEntries()) {
    try {
      updateStatus(i,total,ConvertProcess.PATHS);
      i++;
      if (entry.toLowerCase().endsWith("String_Node_Str")) {
        File f=wad.extractFileData(entry,tmpdir.toString());
        f.deleteOnExit();
        KcsFile kcsFile=new KcsFile(f);
        List<CameraSweepDataEntry> entries=new ArrayList<>(kcsFile.getKcsEntries().size());
        for (        KcsEntry kcsEntry : kcsFile.getKcsEntries()) {
          Matrix3f mat=new Matrix3f();
          Vector3f direction=ConversionUtils.convertVector(kcsEntry.getDirection());
          Vector3f left=ConversionUtils.convertVector(kcsEntry.getLeft());
          Vector3f up=ConversionUtils.convertVector(kcsEntry.getUp());
          mat.setColumn(0,new Vector3f(-direction.x,direction.y,direction.z));
          mat.setColumn(1,new Vector3f(left.x,-left.y,-left.z));
          mat.setColumn(2,new Vector3f(-up.x,up.y,up.z));
          entries.add(new CameraSweepDataEntry(ConversionUtils.convertVector(kcsEntry.getPosition()),new Quaternion().fromRotationMatrix(mat),FastMath.RAD_TO_DEG * kcsEntry.getLens(),kcsEntry.getNear()));
        }
        CameraSweepData cameraSweepData=new CameraSweepData(entries);
        exporter.save(cameraSweepData,new File(destination.concat(entry.substring(0,entry.length() - 3)).concat(CameraSweepDataLoader.CAMERA_SWEEP_DATA_FILE_EXTENSION)));
      }
 else       if (entry.toLowerCase().endsWith("String_Node_Str")) {
        wad.extractFileData(entry,destination);
      }
    }
 catch (    Exception ex) {
      String msg="String_Node_Str" + destination + "String_Node_Str";
      logger.log(Level.SEVERE,msg,ex);
      throw new RuntimeException(msg,ex);
    }
  }
}

Fixed version (ground truth):
/** 
 * Extract and copy DK II camera sweep files (paths)
 * @param dungeonKeeperFolder DK II main folder
 * @param destination Destination folder
 */
private void convertPaths(String dungeonKeeperFolder,String destination){
  if (!ConvertProcess.PATHS.isOutdated()) {
    return;
  }
  LOGGER.log(Level.INFO,"String_Node_Str",destination);
  updateStatus(null,null,ConvertProcess.PATHS);
  AssetUtils.deleteFolder(new File(destination));
  WadFile wad=new WadFile(new File(dungeonKeeperFolder + PathUtils.DKII_DATA_FOLDER + "String_Node_Str"));
  int i=0;
  int total=wad.getWadFileEntryCount();
  File tmpdir=new File(System.getProperty("String_Node_Str"));
  BinaryExporter exporter=BinaryExporter.getInstance();
  for (  final String entry : wad.getWadFileEntries()) {
    try {
      updateStatus(i,total,ConvertProcess.PATHS);
      i++;
      if (entry.toLowerCase().endsWith("String_Node_Str")) {
        File f=wad.extractFileData(entry,tmpdir.toString());
        f.deleteOnExit();
        KcsFile kcsFile=new KcsFile(f);
        List<CameraSweepDataEntry> entries=new ArrayList<>(kcsFile.getKcsEntries().size());
        for (        KcsEntry kcsEntry : kcsFile.getKcsEntries()) {
          Matrix3f mat=new Matrix3f();
          Vector3f direction=ConversionUtils.convertVector(kcsEntry.getDirection());
          Vector3f left=ConversionUtils.convertVector(kcsEntry.getLeft());
          Vector3f up=ConversionUtils.convertVector(kcsEntry.getUp());
          mat.setColumn(0,new Vector3f(-direction.x,direction.y,direction.z));
          mat.setColumn(1,new Vector3f(left.x,-left.y,-left.z));
          mat.setColumn(2,new Vector3f(-up.x,up.y,up.z));
          entries.add(new CameraSweepDataEntry(ConversionUtils.convertVector(kcsEntry.getPosition()),new Quaternion().fromRotationMatrix(mat),FastMath.RAD_TO_DEG * kcsEntry.getLens(),kcsEntry.getNear()));
        }
        CameraSweepData cameraSweepData=new CameraSweepData(entries);
        exporter.save(cameraSweepData,new File(destination.concat(entry.substring(0,entry.length() - 3)).concat(CameraSweepDataLoader.CAMERA_SWEEP_DATA_FILE_EXTENSION)));
      }
 else       if (entry.toLowerCase().endsWith("String_Node_Str")) {
        wad.extractFileData(entry,destination);
      }
    }
 catch (    Exception ex) {
      String msg="String_Node_Str" + destination + "String_Node_Str";
      LOGGER.log(Level.SEVERE,msg,ex);
      throw new RuntimeException(msg,ex);
    }
  }
}