Program: 87117
Project: 87117
Buggy source:
public static boolean validateJar(File libPath,byte[] data,List<String> checksums) throws IOException {
  System.out.println("String_Node_Str" + libPath.getAbsolutePath() + "String_Node_Str");
  HashMap<String,String> files=new HashMap<String,String>();
  String[] hashes=null;
  JarInputStream jar=new JarInputStream(new ByteArrayInputStream(data));
  JarEntry entry=jar.getNextJarEntry();
  while (entry != null) {
    byte[] eData=readFully(jar);
    if (entry.getName().equals("String_Node_Str")) {
      hashes=new String(eData,Charset.forName("String_Node_Str")).split("String_Node_Str");
    }
    if (!entry.isDirectory()) {
      files.put(entry.getName(),Hashing.sha1().hashBytes(eData).toString());
    }
    entry=jar.getNextJarEntry();
  }
  jar.close();
  if (hashes != null) {
    boolean failed=!checksums.contains(files.get("String_Node_Str"));
    if (failed) {
      System.out.println("String_Node_Str");
    }
 else {
      System.out.println("String_Node_Str");
      for (      String hash : hashes) {
        if (hash.trim().equals("String_Node_Str") || !hash.contains("String_Node_Str"))         continue;
        String[] e=hash.split("String_Node_Str");
        String validChecksum=e[0];
        String target=e[1];
        String checksum=files.get(target);
        if (!files.containsKey(target) || checksum == null) {
          System.out.println("String_Node_Str" + target + "String_Node_Str");
          failed=true;
        }
 else         if (!checksum.equals(validChecksum)) {
          System.out.println("String_Node_Str" + target + "String_Node_Str"+ checksum+ "String_Node_Str"+ validChecksum+ "String_Node_Str");
          failed=true;
        }
      }
    }
    if (!failed) {
      System.out.println("String_Node_Str");
    }
    return !failed;
  }
 else {
    System.out.println("String_Node_Str");
    return false;
  }
}

Fixed version (ground truth):
public static boolean validateJar(File libPath,byte[] data,List<String> checksums) throws IOException {
  System.out.println("String_Node_Str" + libPath.getAbsolutePath() + "String_Node_Str");
  HashMap<String,String> files=new HashMap<String,String>();
  String[] hashes=null;
  JarInputStream jar=new JarInputStream(new ByteArrayInputStream(data));
  JarEntry entry=jar.getNextJarEntry();
  while (entry != null) {
    byte[] eData=readFully(jar);
    if (entry.getName().equals("String_Node_Str")) {
      hashes=new String(eData,Charset.forName("String_Node_Str")).split("String_Node_Str");
    }
    if (!entry.isDirectory()) {
      files.put(entry.getName(),Hashing.sha1().hashBytes(eData).toString());
    }
    entry=jar.getNextJarEntry();
  }
  jar.close();
  if (hashes != null) {
    boolean failed=!checksums.contains(files.get("String_Node_Str"));
    if (failed) {
      System.err.println("String_Node_Str");
    }
 else {
      System.out.println("String_Node_Str");
      for (      String hash : hashes) {
        if (hash.trim().equals("String_Node_Str") || !hash.contains("String_Node_Str"))         continue;
        String[] e=hash.split("String_Node_Str");
        String validChecksum=e[0];
        String target=e[1];
        String checksum=files.get(target);
        if (!files.containsKey(target) || checksum == null) {
          System.err.println("String_Node_Str" + target + "String_Node_Str");
          failed=true;
        }
 else         if (!checksum.equals(validChecksum)) {
          System.err.println("String_Node_Str" + target + "String_Node_Str"+ checksum+ "String_Node_Str"+ validChecksum+ "String_Node_Str");
          failed=true;
        }
      }
    }
    if (!failed) {
      System.out.println("String_Node_Str");
    }
    return !failed;
  }
 else {
    System.out.println("String_Node_Str");
    return false;
  }
}