Program: 69575
Project: 69575
Buggy source:
private static List getJDBCDriverInfoListFromODADir(List fileList){
  List driverList=new ArrayList();
  List allJars=new ArrayList();
  allJars.addAll(fileList);
  allJars.addAll(Arrays.asList(JarFile.getDriverLocation().listFiles(new FileFilter(){
    public boolean accept(    File fileName){
      if (fileName.isFile() && (fileName.getName().toLowerCase().endsWith("String_Node_Str") || fileName.getName().toLowerCase().endsWith("String_Node_Str"))) {
        return true;
      }
      return false;
    }
  }
)));
  if (allJars == null || allJars.size() == 0)   return driverList;
  URLClassLoader urlClassLoader=createClassLoader(allJars.toArray());
  for (int i=0; i < fileList.size(); i++) {
    String[] resourceNames=getAllResouceNames((File)fileList.get(i));
    List subDriverList=new ArrayList();
    for (int j=0; j < resourceNames.length; j++) {
      String resourceName=resourceNames[j];
      if (resourceName.endsWith("String_Node_Str")) {
        resourceName=modifyResourceName(resourceName);
        Class aClass=loadClass(urlClassLoader,resourceName);
        if (isImplementedDriver(aClass)) {
          JDBCDriverInformation info=JDBCDriverInformation.newInstance(aClass);
          if (info != null) {
            driverList.add(info);
            subDriverList.add(info);
          }
        }
      }
    }
    if (subDriverList.isEmpty()) {
      if (!failLoadFileList.contains(fileList.get(i)))       failLoadFileList.add(fileList.get(i));
    }
 else {
      if (failLoadFileList.contains(fileList.get(i)))       failLoadFileList.remove(fileList.get(i));
    }
    file2Drivers.put(((File)fileList.get(i)).getName(),subDriverList);
  }
  urlClassLoader.close();
  return driverList;
}

Fixed version (ground truth):
private static List getJDBCDriverInfoListFromODADir(List fileList){
  List driverList=new ArrayList();
  List allJars=new ArrayList();
  allJars.addAll(fileList);
  allJars.addAll(Arrays.asList(JarFile.getDriverLocation().listFiles(new FileFilter(){
    public boolean accept(    File fileName){
      if (fileName.isFile() && (fileName.getName().toLowerCase().endsWith("String_Node_Str") || fileName.getName().toLowerCase().endsWith("String_Node_Str"))) {
        return true;
      }
      return false;
    }
  }
)));
  if (allJars == null || allJars.size() == 0)   return driverList;
  URLClassLoader urlClassLoader=createClassLoader(allJars.toArray());
  for (int i=0; i < fileList.size(); i++) {
    String[] resourceNames=getAllResouceNames((File)fileList.get(i));
    List subDriverList=new ArrayList();
    for (int j=0; j < resourceNames.length; j++) {
      String resourceName=resourceNames[j];
      if (resourceName.endsWith("String_Node_Str")) {
        resourceName=modifyResourceName(resourceName);
        Class aClass=loadClass(urlClassLoader,resourceName);
        if (isImplementedDriver(aClass)) {
          JDBCDriverInformation info=JDBCDriverInformation.newInstance(aClass);
          if (info != null) {
            driverList.add(info);
            subDriverList.add(info);
          }
        }
      }
    }
    if (subDriverList.isEmpty()) {
      if (!failLoadFileList.contains(fileList.get(i)))       failLoadFileList.add(fileList.get(i));
    }
 else {
      if (failLoadFileList.contains(fileList.get(i)))       failLoadFileList.remove(fileList.get(i));
    }
    file2Drivers.put(((File)fileList.get(i)).getName(),subDriverList);
  }
  return driverList;
}