Program: 20466
Project: 20466
Buggy source:
/** 
 * Parses error sub-packets.
 * @param parser the XML parser.
 * @return an error sub-packet.
 * @throws Exception if an exception occurs while parsing the packet.
 */
public static XMPPError parseError(XmlPullParser parser) throws Exception {
  final String errorNamespace="String_Node_Str";
  String errorCode="String_Node_Str";
  String type=null;
  String message=null;
  String condition=null;
  List<PacketExtension> extensions=new ArrayList<PacketExtension>();
  for (int i=0; i < parser.getAttributeCount(); i++) {
    if (parser.getAttributeName(i).equals("String_Node_Str")) {
      errorCode=parser.getAttributeValue("String_Node_Str","String_Node_Str");
    }
    if (parser.getAttributeName(i).equals("String_Node_Str")) {
      type=parser.getAttributeValue("String_Node_Str","String_Node_Str");
    }
  }
  boolean done=false;
  while (!done) {
    int eventType=parser.next();
    if (eventType == XmlPullParser.START_TAG) {
      if (parser.getName().equals("String_Node_Str")) {
        parser.next();
        message=parser.getText();
        parser.next();
      }
 else {
        String elementName=parser.getName();
        String namespace=parser.getNamespace();
        if (errorNamespace.equals(namespace)) {
          condition=elementName;
        }
 else {
          extensions.add(parsePacketExtension(elementName,namespace,parser));
        }
      }
    }
 else     if (eventType == XmlPullParser.END_TAG) {
      if (parser.getName().equals("String_Node_Str")) {
        done=true;
      }
    }
  }
  return new XMPPError(Integer.parseInt(errorCode),XMPPError.Type.fromString(type),condition,message,extensions);
}

Fixed version (ground truth):
/** 
 * Parses error sub-packets.
 * @param parser the XML parser.
 * @return an error sub-packet.
 * @throws Exception if an exception occurs while parsing the packet.
 */
public static XMPPError parseError(XmlPullParser parser) throws Exception {
  final String errorNamespace="String_Node_Str";
  String errorCode="String_Node_Str";
  String type=null;
  String message=null;
  String condition=null;
  List<PacketExtension> extensions=new ArrayList<PacketExtension>();
  for (int i=0; i < parser.getAttributeCount(); i++) {
    if (parser.getAttributeName(i).equals("String_Node_Str")) {
      errorCode=parser.getAttributeValue("String_Node_Str","String_Node_Str");
    }
    if (parser.getAttributeName(i).equals("String_Node_Str")) {
      type=parser.getAttributeValue("String_Node_Str","String_Node_Str");
    }
  }
  boolean done=false;
  while (!done) {
    int eventType=parser.next();
    if (eventType == XmlPullParser.START_TAG) {
      if (parser.getName().equals("String_Node_Str")) {
        message=parser.nextText();
      }
 else {
        String elementName=parser.getName();
        String namespace=parser.getNamespace();
        if (errorNamespace.equals(namespace)) {
          condition=elementName;
        }
 else {
          extensions.add(parsePacketExtension(elementName,namespace,parser));
        }
      }
    }
 else     if (eventType == XmlPullParser.END_TAG) {
      if (parser.getName().equals("String_Node_Str")) {
        done=true;
      }
    }
  }
  return new XMPPError(Integer.parseInt(errorCode),XMPPError.Type.fromString(type),condition,message,extensions);
}