Program: 113325
Project: 113325
Buggy source:
@Override public FileStatus[] listStatus(Path path) throws IOException {
  if (path == null) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  Volume xtreemfsVolume=getVolumeFromPath(path);
  final String pathString=preparePath(path,xtreemfsVolume);
  if (Logging.isDebug()) {
    Logging.logMessage(Logging.LEVEL_DEBUG,this,"String_Node_Str" + pathString);
  }
  if (isXtreemFSDirectory(pathString,xtreemfsVolume) == false) {
    if (compareHadoopVersion(new int[]{2,0,0}) >= 0) {
      throw new FileNotFoundException(pathString);
    }
 else     if (compareHadoopVersion(new int[]{1,0,0}) >= 0) {
      return null;
    }
 else     if (compareHadoopVersion(new int[]{0,21,0}) >= 0) {
      throw new FileNotFoundException(pathString);
    }
 else {
      return null;
    }
  }
  DirectoryEntries dirEntries=xtreemfsVolume.readDir(userCredentials,pathString,0,0,false);
  statistics.incrementLargeReadOps(1);
  ArrayList<FileStatus> fileStatus=new ArrayList<FileStatus>(dirEntries.getEntriesCount() - 2);
  for (  DirectoryEntry entry : dirEntries.getEntriesList()) {
    if (entry.getName().equals("String_Node_Str") || entry.getName().equals("String_Node_Str")) {
      continue;
    }
    final Stat stat=entry.getStbuf();
    final boolean isDir=isXtreemFSDirectory(stat);
    if (isDir) {
      fileStatus.add(new FileStatus(0,true,0,0,(long)(stat.getMtimeNs() / 1e6),(long)(stat.getAtimeNs() / 1e6),new FsPermission((short)stat.getMode()),stat.getUserId(),stat.getGroupId(),new Path(makeAbsolute(path),entry.getName())));
    }
 else {
      Replicas replicas=xtreemfsVolume.listReplicas(userCredentials,pathString);
      fileStatus.add(new FileStatus(stat.getSize(),false,replicas.getReplicasCount(),replicas.getReplicas(0).getStripingPolicy().getStripeSize() * 1024,(long)(stat.getMtimeNs() / 1e6),(long)(stat.getAtimeNs() / 1e6),new FsPermission((short)stat.getMode()),stat.getUserId(),stat.getGroupId(),new Path(makeAbsolute(path),entry.getName())));
    }
  }
  return fileStatus.toArray(new FileStatus[fileStatus.size()]);
}

Fixed version (ground truth):
@Override public FileStatus[] listStatus(Path path) throws IOException {
  if (path == null) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  Volume xtreemfsVolume=getVolumeFromPath(path);
  final String pathString=preparePath(path,xtreemfsVolume);
  if (Logging.isDebug()) {
    Logging.logMessage(Logging.LEVEL_DEBUG,this,"String_Node_Str" + pathString);
  }
  if (isXtreemFSDirectory(pathString,xtreemfsVolume) == false) {
    if (compareHadoopVersion(new int[]{2,0,0}) >= 0) {
      throw new FileNotFoundException(pathString);
    }
 else     if (compareHadoopVersion(new int[]{1,0,0}) >= 0) {
      return null;
    }
 else     if (compareHadoopVersion(new int[]{0,21,0}) >= 0) {
      throw new FileNotFoundException(pathString);
    }
 else {
      return null;
    }
  }
  DirectoryEntries dirEntries=xtreemfsVolume.readDir(userCredentials,pathString,0,0,false);
  statistics.incrementLargeReadOps(1);
  ArrayList<FileStatus> fileStatus=new ArrayList<FileStatus>(dirEntries.getEntriesCount() - 2);
  for (  DirectoryEntry entry : dirEntries.getEntriesList()) {
    if (entry.getName().equals("String_Node_Str") || entry.getName().equals("String_Node_Str")) {
      continue;
    }
    final Stat stat=entry.getStbuf();
    final boolean isDir=isXtreemFSDirectory(stat);
    if (isDir) {
      fileStatus.add(new FileStatus(0,true,0,0,(long)(stat.getMtimeNs() / 1e6),(long)(stat.getAtimeNs() / 1e6),new FsPermission((short)stat.getMode()),stat.getUserId(),stat.getGroupId(),new Path(makeAbsolute(path),entry.getName())));
    }
 else {
      Replicas replicas=xtreemfsVolume.listReplicas(userCredentials,pathString + "String_Node_Str" + entry.getName());
      fileStatus.add(new FileStatus(stat.getSize(),false,replicas.getReplicasCount(),replicas.getReplicas(0).getStripingPolicy().getStripeSize() * 1024,(long)(stat.getMtimeNs() / 1e6),(long)(stat.getAtimeNs() / 1e6),new FsPermission((short)stat.getMode()),stat.getUserId(),stat.getGroupId(),new Path(makeAbsolute(path),entry.getName())));
    }
  }
  return fileStatus.toArray(new FileStatus[fileStatus.size()]);
}