Program: 24650
Project: 24650
Buggy source:
/** 
 * Translates any HTML-special characters (like quote, ampersand, etc.) into the corresponding code (like &amp;quot;)
 * @param s The string to transform
 */
public static String makeHtmlString(String s,boolean keepTags){
  if (s == null)   return "String_Node_Str";
  StringBuffer buf=new StringBuffer();
  boolean inTag=false;
  for (int i=0; i < s.length(); i++) {
    char c=s.charAt(i);
    if (keepTags && !inTag && c == '<') {
      inTag=true;
      buf.append(c);
      continue;
    }
    if (keepTags && inTag && c == '>') {
      inTag=false;
      buf.append(c);
      continue;
    }
    if (inTag) {
      buf.append(c);
      continue;
    }
    if (c == '&') {
      int j;
      for (j=i + 1; j < s.length(); j++) {
        if (!Character.isLetterOrDigit(s.charAt(j)))         break;
      }
      if (j < s.length() && s.charAt(j) == ';') {
        while (i <= j)         buf.append(s.charAt(i++));
        i--;
        continue;
      }
    }
    if (c >= 0 && c <= 31 && c != 9 && c != 11 && c != 13)     continue;
switch (c) {
case '<':
      buf.append("String_Node_Str");
    break;
case '>':
  buf.append("String_Node_Str");
break;
case '&':
buf.append("String_Node_Str");
break;
case '\'':
buf.append("String_Node_Str");
break;
case '\"':
buf.append("String_Node_Str");
break;
case '\n':
buf.append("String_Node_Str");
break;
case 128:
buf.append("String_Node_Str");
break;
case 129:
buf.append("String_Node_Str");
break;
case 130:
buf.append("String_Node_Str");
break;
case 131:
buf.append("String_Node_Str");
break;
case 132:
buf.append("String_Node_Str");
break;
case 133:
buf.append("String_Node_Str");
break;
case 134:
buf.append("String_Node_Str");
break;
case 135:
buf.append("String_Node_Str");
break;
case 136:
buf.append("String_Node_Str");
break;
case 137:
buf.append("String_Node_Str");
break;
case 138:
buf.append("String_Node_Str");
break;
case 139:
buf.append("String_Node_Str");
break;
case 140:
buf.append("String_Node_Str");
break;
case 141:
buf.append("String_Node_Str");
break;
case 142:
buf.append("String_Node_Str");
break;
case 143:
buf.append("String_Node_Str");
break;
case 144:
buf.append("String_Node_Str");
break;
case 145:
buf.append("String_Node_Str");
break;
case 146:
buf.append("String_Node_Str");
break;
case 147:
buf.append("String_Node_Str");
break;
case 148:
buf.append("String_Node_Str");
break;
case 149:
buf.append("String_Node_Str");
break;
case 150:
buf.append("String_Node_Str");
break;
case 151:
buf.append("String_Node_Str");
break;
case 152:
buf.append("String_Node_Str");
break;
case 153:
buf.append("String_Node_Str");
break;
case 154:
buf.append("String_Node_Str");
break;
case 155:
buf.append("String_Node_Str");
break;
case 156:
buf.append("String_Node_Str");
break;
case 157:
buf.append("String_Node_Str");
break;
case 158:
buf.append("String_Node_Str");
break;
case 159:
buf.append("String_Node_Str");
break;
default :
buf.append(c);
break;
}
}
return buf.toString();
}

Fixed version (ground truth):
/** 
 * Translates any HTML-special characters (like quote, ampersand, etc.) into the corresponding code (like &amp;quot;)
 * @param s The string to transform
 */
public static String makeHtmlString(String s,boolean keepTags){
  if (s == null)   return "String_Node_Str";
  StringBuffer buf=new StringBuffer();
  boolean inTag=false;
  for (int i=0; i < s.length(); i++) {
    char c=s.charAt(i);
    if (keepTags && !inTag && c == '<') {
      inTag=true;
      buf.append(c);
      continue;
    }
    if (keepTags && inTag && c == '>') {
      inTag=false;
      buf.append(c);
      continue;
    }
    if (inTag) {
      buf.append(c);
      continue;
    }
    if (keepTags && c == '&') {
      int j;
      for (j=i + 1; j < s.length(); j++) {
        if (!Character.isLetterOrDigit(s.charAt(j)))         break;
      }
      if (j < s.length() && s.charAt(j) == ';') {
        while (i <= j)         buf.append(s.charAt(i++));
        i--;
        continue;
      }
    }
    if (c >= 0 && c <= 31 && c != 9 && c != 11 && c != 13)     continue;
switch (c) {
case '<':
      buf.append("String_Node_Str");
    break;
case '>':
  buf.append("String_Node_Str");
break;
case '&':
buf.append("String_Node_Str");
break;
case '\'':
buf.append("String_Node_Str");
break;
case '\"':
buf.append("String_Node_Str");
break;
case '\n':
buf.append("String_Node_Str");
break;
case 128:
buf.append("String_Node_Str");
break;
case 129:
buf.append("String_Node_Str");
break;
case 130:
buf.append("String_Node_Str");
break;
case 131:
buf.append("String_Node_Str");
break;
case 132:
buf.append("String_Node_Str");
break;
case 133:
buf.append("String_Node_Str");
break;
case 134:
buf.append("String_Node_Str");
break;
case 135:
buf.append("String_Node_Str");
break;
case 136:
buf.append("String_Node_Str");
break;
case 137:
buf.append("String_Node_Str");
break;
case 138:
buf.append("String_Node_Str");
break;
case 139:
buf.append("String_Node_Str");
break;
case 140:
buf.append("String_Node_Str");
break;
case 141:
buf.append("String_Node_Str");
break;
case 142:
buf.append("String_Node_Str");
break;
case 143:
buf.append("String_Node_Str");
break;
case 144:
buf.append("String_Node_Str");
break;
case 145:
buf.append("String_Node_Str");
break;
case 146:
buf.append("String_Node_Str");
break;
case 147:
buf.append("String_Node_Str");
break;
case 148:
buf.append("String_Node_Str");
break;
case 149:
buf.append("String_Node_Str");
break;
case 150:
buf.append("String_Node_Str");
break;
case 151:
buf.append("String_Node_Str");
break;
case 152:
buf.append("String_Node_Str");
break;
case 153:
buf.append("String_Node_Str");
break;
case 154:
buf.append("String_Node_Str");
break;
case 155:
buf.append("String_Node_Str");
break;
case 156:
buf.append("String_Node_Str");
break;
case 157:
buf.append("String_Node_Str");
break;
case 158:
buf.append("String_Node_Str");
break;
case 159:
buf.append("String_Node_Str");
break;
default :
buf.append(c);
break;
}
}
return buf.toString();
}