Program: 3544
Project: 3544
Buggy source:
/** 
 * @see java.sql.DatabaseMetaData#getIndexInfo(java.lang.String,java.lang.String,java.lang.String,boolean,boolean)
 */
public ResultSet getIndexInfo(String c,String s,String t,boolean u,boolean approximate) throws SQLException {
  String sql;
  ResultSet rs=null;
  Statement stat=conn.createStatement();
  sql="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str" + escape(t) + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ Integer.toString(tableIndexOther)+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
  try {
    ArrayList<ArrayList<Object>> indexList=new ArrayList<ArrayList<Object>>();
    rs=stat.executeQuery("String_Node_Str" + escape(t) + "String_Node_Str");
    while (rs.next()) {
      indexList.add(new ArrayList<Object>());
      indexList.get(indexList.size() - 1).add(rs.getString(2));
      indexList.get(indexList.size() - 1).add(rs.getInt(3));
    }
    rs.close();
    int i=0;
    Iterator<ArrayList<Object>> indexIterator=indexList.iterator();
    ArrayList<Object> currentIndex;
    while (indexIterator.hasNext()) {
      currentIndex=indexIterator.next();
      String indexName=currentIndex.get(0).toString();
      int unique=(Integer)currentIndex.get(1);
      rs=stat.executeQuery("String_Node_Str" + escape(indexName) + "String_Node_Str");
      for (; rs.next(); i++) {
        int ordinalPosition=rs.getInt(1) + 1;
        String colName=rs.getString(3);
        if (i > 0) {
          sql+="String_Node_Str";
        }
        sql+="String_Node_Str" + Integer.toString(1 - unique) + "String_Node_Str"+ "String_Node_Str"+ escape(indexName)+ "String_Node_Str"+ Integer.toString(ordinalPosition)+ "String_Node_Str"+ "String_Node_Str"+ escape(colName)+ "String_Node_Str";
        i++;
      }
      rs.close();
    }
    sql+="String_Node_Str";
  }
 catch (  SQLException e) {
    sql+="String_Node_Str";
  }
  return stat.executeQuery(sql);
}

Fixed version (ground truth):
/** 
 * @see java.sql.DatabaseMetaData#getIndexInfo(java.lang.String,java.lang.String,java.lang.String,boolean,boolean)
 */
public ResultSet getIndexInfo(String c,String s,String t,boolean u,boolean approximate) throws SQLException {
  String sql;
  ResultSet rs=null;
  Statement stat=conn.createStatement();
  sql="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str" + escape(t) + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ Integer.toString(tableIndexOther)+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
  try {
    ArrayList<ArrayList<Object>> indexList=new ArrayList<ArrayList<Object>>();
    rs=stat.executeQuery("String_Node_Str" + escape(t) + "String_Node_Str");
    while (rs.next()) {
      indexList.add(new ArrayList<Object>());
      indexList.get(indexList.size() - 1).add(rs.getString(2));
      indexList.get(indexList.size() - 1).add(rs.getInt(3));
    }
    rs.close();
    int i=0;
    Iterator<ArrayList<Object>> indexIterator=indexList.iterator();
    ArrayList<Object> currentIndex;
    while (indexIterator.hasNext()) {
      currentIndex=indexIterator.next();
      String indexName=currentIndex.get(0).toString();
      int unique=(Integer)currentIndex.get(1);
      rs=stat.executeQuery("String_Node_Str" + escape(indexName) + "String_Node_Str");
      for (; rs.next(); i++) {
        int ordinalPosition=rs.getInt(1) + 1;
        String colName=rs.getString(3);
        if (i > 0) {
          sql+="String_Node_Str";
        }
        sql+="String_Node_Str" + Integer.toString(1 - unique) + "String_Node_Str"+ "String_Node_Str"+ escape(indexName)+ "String_Node_Str"+ Integer.toString(ordinalPosition)+ "String_Node_Str"+ "String_Node_Str"+ escape(colName)+ "String_Node_Str";
        i++;
      }
      rs.close();
    }
    sql+="String_Node_Str";
  }
 catch (  SQLException e) {
    sql+="String_Node_Str";
  }
  return ((Stmt)stat).executeQuery(sql,true);
}