Program: 24765
Project: 24765
Buggy source:
/** 
 * Constructor - Reads and parses the global configuration file (XML) for  the servlet.
 * @param path                Filesystem path to the config file.
 * @throws DynaXMLException    If a read or parse error occurs.
 */
public void read(String expectedRootTag,String path) throws GeneralException {
  try {
    StreamSource src=new StreamSource(new File(path));
    NodeInfo doc=null;
    try {
      doc=TinyBuilder.build(src,new AllElementStripper(),config);
    }
 catch (    XPathException e) {
      throw new RuntimeException(e);
    }
    EasyNode root=new EasyNode(doc);
    String rootTag=root.name();
    if (rootTag.equals("String_Node_Str") && root.nChildren() == 1) {
      root=root.child(0);
      rootTag=root.name();
    }
    if (!rootTag.equals(expectedRootTag))     throw new GeneralException("String_Node_Str" + path + "String_Node_Str"+ "String_Node_Str"+ expectedRootTag+ "String_Node_Str");
    for (int i=0; i < root.nChildren(); i++) {
      EasyNode el=root.child(i);
      if (!el.isElement())       continue;
      String tagName=el.name();
      for (int j=0; j < el.nAttrs(); j++) {
        String attrName=el.attrName(j);
        String strVal=el.attrValue(j);
        if (!handleProperty(tagName + "String_Node_Str" + attrName,strVal)) {
          throw new GeneralException("String_Node_Str" + tagName + "String_Node_Str"+ attrName+ "String_Node_Str");
        }
        attribs.put(tagName + "String_Node_Str" + attrName,strVal);
      }
    }
  }
 catch (  Exception e) {
    throw new GeneralException("String_Node_Str" + path + "String_Node_Str"+ e);
  }
  requireOrElse(errorGenSheet,"String_Node_Str");
}

Fixed version (ground truth):
/** 
 * Constructor - Reads and parses the global configuration file (XML) for  the servlet.
 * @param path                Filesystem path to the config file.
 * @throws DynaXMLException    If a read or parse error occurs.
 */
public void read(String expectedRootTag,String path) throws GeneralException {
  try {
    StreamSource src=new StreamSource(new File(path));
    NodeInfo doc=null;
    try {
      doc=TinyBuilder.build(src,new AllElementStripper(),config);
    }
 catch (    XPathException e) {
      throw new RuntimeException(e);
    }
    EasyNode root=new EasyNode(doc);
    String rootTag=root.name();
    if (rootTag.equals("String_Node_Str") && root.nChildren() == 1) {
      root=root.child(0);
      rootTag=root.name();
    }
    if (!rootTag.equals(expectedRootTag))     throw new GeneralException("String_Node_Str" + path + "String_Node_Str"+ "String_Node_Str"+ expectedRootTag+ "String_Node_Str");
    for (int i=0; i < root.nChildren(); i++) {
      EasyNode el=root.child(i);
      if (!el.isElement())       continue;
      String tagName=el.name();
      for (int j=0; j < el.nAttrs(); j++) {
        String attrName=el.attrName(j);
        String strVal=el.attrValue(j);
        if (!handleProperty(tagName + "String_Node_Str" + attrName,strVal)) {
          ;
        }
        attribs.put(tagName + "String_Node_Str" + attrName,strVal);
      }
    }
  }
 catch (  Exception e) {
    throw new GeneralException("String_Node_Str" + path + "String_Node_Str"+ e);
  }
  requireOrElse(errorGenSheet,"String_Node_Str");
}