Program: 20521
Project: 20521
Buggy source:
/** 
 * Parses an IQ packet.
 * @param parser the XML parser, positioned at the start of an IQ packet.
 * @return an IQ object.
 * @throws Exception if an exception occurs while parsing the packet.
 */
private static Packet parseIQ(XmlPullParser parser) throws Exception {
  IQ iqPacket=null;
  String id=parser.getAttributeValue("String_Node_Str","String_Node_Str");
  String to=parser.getAttributeValue("String_Node_Str","String_Node_Str");
  String from=parser.getAttributeValue("String_Node_Str","String_Node_Str");
  IQ.Type type=IQ.Type.fromString(parser.getAttributeValue("String_Node_Str","String_Node_Str"));
  Error error=null;
  Map properties=null;
  boolean done=false;
  while (!done) {
    int eventType=parser.next();
    if (eventType == parser.START_TAG) {
      if (parser.getName().equals("String_Node_Str")) {
        String namespace=parser.getNamespace();
        if (namespace.equals("String_Node_Str")) {
          iqPacket=parseAuthentication(parser);
        }
 else         if (namespace.equals("String_Node_Str")) {
          iqPacket=parseRoster(parser);
        }
      }
 else       if (parser.getName().equals("String_Node_Str")) {
        error=parseError(parser);
      }
 else       if (parser.getName().equals("String_Node_Str") && parser.getNamespace().equals(PROPERTIES_NAMESPACE)) {
        properties=parseProperties(parser);
      }
    }
 else     if (eventType == parser.END_TAG) {
      if (parser.getName().equals("String_Node_Str")) {
        done=true;
      }
    }
  }
  if (iqPacket == null) {
    iqPacket=new IQ();
  }
  iqPacket.setPacketID(id);
  iqPacket.setTo(to);
  iqPacket.setFrom(from);
  iqPacket.setType(type);
  iqPacket.setError(error);
  if (properties != null) {
    for (Iterator i=properties.keySet().iterator(); i.hasNext(); ) {
      String name=(String)i.next();
      iqPacket.setProperty(name,properties.get(name));
    }
  }
  return iqPacket;
}

Fixed version (ground truth):
/** 
 * Parses an IQ packet.
 * @param parser the XML parser, positioned at the start of an IQ packet.
 * @return an IQ object.
 * @throws Exception if an exception occurs while parsing the packet.
 */
private static Packet parseIQ(XmlPullParser parser) throws Exception {
  IQ iqPacket=null;
  String id=parser.getAttributeValue("String_Node_Str","String_Node_Str");
  String to=parser.getAttributeValue("String_Node_Str","String_Node_Str");
  String from=parser.getAttributeValue("String_Node_Str","String_Node_Str");
  IQ.Type type=IQ.Type.fromString(parser.getAttributeValue("String_Node_Str","String_Node_Str"));
  XMPPError error=null;
  Map properties=null;
  boolean done=false;
  while (!done) {
    int eventType=parser.next();
    if (eventType == parser.START_TAG) {
      if (parser.getName().equals("String_Node_Str")) {
        String namespace=parser.getNamespace();
        if (namespace.equals("String_Node_Str")) {
          iqPacket=parseAuthentication(parser);
        }
 else         if (namespace.equals("String_Node_Str")) {
          iqPacket=parseRoster(parser);
        }
      }
 else       if (parser.getName().equals("String_Node_Str")) {
        error=parseError(parser);
      }
 else       if (parser.getName().equals("String_Node_Str") && parser.getNamespace().equals(PROPERTIES_NAMESPACE)) {
        properties=parseProperties(parser);
      }
    }
 else     if (eventType == parser.END_TAG) {
      if (parser.getName().equals("String_Node_Str")) {
        done=true;
      }
    }
  }
  if (iqPacket == null) {
    iqPacket=new IQ();
  }
  iqPacket.setPacketID(id);
  iqPacket.setTo(to);
  iqPacket.setFrom(from);
  iqPacket.setType(type);
  iqPacket.setError(error);
  if (properties != null) {
    for (Iterator i=properties.keySet().iterator(); i.hasNext(); ) {
      String name=(String)i.next();
      iqPacket.setProperty(name,properties.get(name));
    }
  }
  return iqPacket;
}