Program: 98442
Project: 98442
Buggy source:
/** 
 * Updates the data stored against product p in the database. DB values are overwritten by the values in p's public fields.
 */
@Override protected void update(Product p){
  long id=p.id;
  Class<?> c=p.getClass();
  String sql="String_Node_Str";
  Field[] fields=c.getFields();
  try {
    String tableName=extractTableName(c.getName());
    if (fields.length > 1) {
      sql="String_Node_Str" + tableName + "String_Node_Str";
      for (int i=0; i < fields.length; i++) {
        Field field=fields[i];
        Class<?> fieldType=field.getType();
        String fieldTypeName=fieldType.getSimpleName();
        if (field.getName().equals("String_Node_Str")) {
          continue;
        }
        sql+=field.getName();
        sql+="String_Node_Str";
        if (fieldTypeName.equalsIgnoreCase("String_Node_Str")) {
          sql+=field.get(p);
        }
 else         if (fieldTypeName.equals("String_Node_Str")) {
          String s=(String)field.get(p);
          if (s != null) {
            sql+="String_Node_Str" + s.replaceAll("String_Node_Str","String_Node_Str") + "String_Node_Str";
          }
 else {
            sql+="String_Node_Str";
          }
        }
 else         if (fieldTypeName.equalsIgnoreCase("String_Node_Str")) {
          sql+=field.get(p);
        }
 else         if (fieldTypeName.equals("String_Node_Str")) {
          Date date=(Date)field.get(p);
          if (date != null) {
            sql+="String_Node_Str" + getDateString(date) + "String_Node_Str";
          }
 else {
            sql+="String_Node_Str";
          }
        }
 else         if (fieldTypeName.equals("String_Node_Str")) {
          Color color=(Color)field.get(p);
          if (color != null) {
            sql+=(color.getRGB());
          }
 else {
            sql+="String_Node_Str";
          }
        }
 else {
          sql=sql.substring(0,sql.lastIndexOf("String_Node_Str"));
        }
        if (i < fields.length - 1) {
          sql+="String_Node_Str";
        }
      }
      sql+="String_Node_Str" + id + "String_Node_Str";
    }
    System.out.println(sql);
    Statement stmt=conn.createStatement();
    stmt.executeUpdate(sql);
  }
 catch (  Exception e) {
    e.printStackTrace();
  }
}

Fixed version (ground truth):
@Override protected void update(Product p){
  long id=p.id;
  Class<?> c=p.getClass();
  String sql="String_Node_Str";
  Field[] fields=c.getFields();
  try {
    String tableName=extractTableName(c.getName());
    if (fields.length > 1) {
      sql="String_Node_Str" + tableName + "String_Node_Str";
      for (int i=0; i < fields.length; i++) {
        Field field=fields[i];
        Class<?> fieldType=field.getType();
        String fieldTypeName=fieldType.getSimpleName();
        if (field.getName().equals("String_Node_Str")) {
          continue;
        }
        sql+=field.getName();
        sql+="String_Node_Str";
        if (fieldTypeName.equalsIgnoreCase("String_Node_Str")) {
          sql+=field.get(p);
        }
 else         if (fieldTypeName.equals("String_Node_Str")) {
          String s=(String)field.get(p);
          if (s != null) {
            sql+="String_Node_Str" + s.replaceAll("String_Node_Str","String_Node_Str") + "String_Node_Str";
          }
 else {
            sql+="String_Node_Str";
          }
        }
 else         if (fieldTypeName.equalsIgnoreCase("String_Node_Str")) {
          sql+=field.get(p);
        }
 else         if (fieldTypeName.equals("String_Node_Str")) {
          Date date=(Date)field.get(p);
          if (date != null) {
            sql+="String_Node_Str" + getDateString(date) + "String_Node_Str";
          }
 else {
            sql+="String_Node_Str";
          }
        }
 else         if (fieldTypeName.equals("String_Node_Str")) {
          Color color=(Color)field.get(p);
          if (color != null) {
            sql+=(color.getRGB());
          }
 else {
            sql+="String_Node_Str";
          }
        }
 else {
          sql=sql.substring(0,sql.lastIndexOf("String_Node_Str"));
        }
        if (i < fields.length - 1) {
          sql+="String_Node_Str";
        }
      }
      sql+="String_Node_Str" + id + "String_Node_Str";
    }
    System.out.println(sql);
    Statement stmt=conn.createStatement();
    stmt.executeUpdate(sql);
  }
 catch (  Exception e) {
    e.printStackTrace();
  }
}