Program: 108938
Project: 108938
Buggy source:
/** 
 * Reads the data definition from the file
 * @param config
 * @param prefix
 * @param zip
 * @throws IOException
 * @throws SAXException
 */
private void readDefinition(final ModelConfiguration config,final String prefix,final ZipFile zip) throws IOException, SAXException {
  final ZipEntry entry=zip.getEntry(prefix + "String_Node_Str");
  if (entry == null) {
    return;
  }
  final XMLReader xmlReader=XMLReaderFactory.createXMLReader();
  final InputSource inputSource=new InputSource(zip.getInputStream(entry));
  xmlReader.setContentHandler(new WorkerLoadXMLHandler(){
    String attr, dtype, atype, ref, min, max;
    @Override protected boolean end(    final String uri,    final String localName,    final String qName) throws SAXException {
      if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        if (attr == null) {
          throw new SAXException(Resources.getMessage("String_Node_Str"));
        }
        if (dtype.equals(DataType.STRING.toString())) {
          config.getInput().getDefinition().setDataType(attr,DataType.STRING);
        }
 else         if (dtype.equals(DataType.DECIMAL.toString())) {
          config.getInput().getDefinition().setDataType(attr,DataType.DECIMAL);
        }
 else {
          config.getInput().getDefinition().setDataType(attr,DataType.DATE(dtype));
        }
        if (atype.equals(AttributeType.IDENTIFYING_ATTRIBUTE.toString())) {
          config.getInput().getDefinition().setAttributeType(attr,AttributeType.IDENTIFYING_ATTRIBUTE);
        }
 else         if (atype.equals(AttributeType.SENSITIVE_ATTRIBUTE.toString())) {
          config.getInput().getDefinition().setAttributeType(attr,AttributeType.SENSITIVE_ATTRIBUTE);
        }
 else         if (atype.equals(AttributeType.INSENSITIVE_ATTRIBUTE.toString())) {
          config.getInput().getDefinition().setAttributeType(attr,AttributeType.INSENSITIVE_ATTRIBUTE);
        }
 else         if (atype.equals(Hierarchy.create().toString())) {
          try {
            config.getInput().getDefinition().setAttributeType(attr,readHierarchy(zip,prefix,ref));
          }
 catch (          final IOException e) {
            throw new SAXException(e);
          }
          config.getInput().getDefinition().setMinimumGeneralization(attr,Double.valueOf(min).intValue());
          config.getInput().getDefinition().setMaximumGeneralization(attr,Double.valueOf(max).intValue());
        }
 else {
          throw new SAXException(Resources.getMessage("String_Node_Str"));
        }
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        attr=payload;
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        atype=payload;
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        dtype=payload;
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        ref=payload;
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        min=payload;
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        max=payload;
        return true;
      }
 else {
        return false;
      }
    }
    @Override protected boolean start(    final String uri,    final String localName,    final String qName,    final Attributes attributes) throws SAXException {
      if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        attr=null;
        dtype=null;
        atype=null;
        ref=null;
        min=null;
        max=null;
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        return true;
      }
 else {
        return false;
      }
    }
  }
);
  xmlReader.parse(inputSource);
}

Fixed version (ground truth):
/** 
 * Reads the data definition from the file
 * @param config
 * @param prefix
 * @param zip
 * @throws IOException
 * @throws SAXException
 */
private void readDefinition(final ModelConfiguration config,final String prefix,final ZipFile zip) throws IOException, SAXException {
  final ZipEntry entry=zip.getEntry(prefix + "String_Node_Str");
  if (entry == null) {
    return;
  }
  final XMLReader xmlReader=XMLReaderFactory.createXMLReader();
  final InputSource inputSource=new InputSource(zip.getInputStream(entry));
  xmlReader.setContentHandler(new WorkerLoadXMLHandler(){
    String attr, dtype, atype, ref, min, max;
    @Override protected boolean end(    final String uri,    final String localName,    final String qName) throws SAXException {
      if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        if (attr == null) {
          throw new SAXException(Resources.getMessage("String_Node_Str"));
        }
        if (dtype.equals(DataType.STRING.toString())) {
          config.getInput().getDefinition().setDataType(attr,DataType.STRING);
        }
 else         if (dtype.equals(DataType.DECIMAL.toString())) {
          config.getInput().getDefinition().setDataType(attr,DataType.DECIMAL);
        }
 else {
          config.getInput().getDefinition().setDataType(attr,DataType.DATE(dtype));
        }
        if (atype.equals(AttributeType.IDENTIFYING_ATTRIBUTE.toString())) {
          config.getInput().getDefinition().setAttributeType(attr,AttributeType.IDENTIFYING_ATTRIBUTE);
        }
 else         if (atype.equals(AttributeType.SENSITIVE_ATTRIBUTE.toString())) {
          config.getInput().getDefinition().setAttributeType(attr,AttributeType.SENSITIVE_ATTRIBUTE);
          if (ref != null) {
            try {
              config.setHierarchy(attr,readHierarchy(zip,prefix,ref));
            }
 catch (            final IOException e) {
              throw new SAXException(e);
            }
          }
        }
 else         if (atype.equals(AttributeType.INSENSITIVE_ATTRIBUTE.toString())) {
          config.getInput().getDefinition().setAttributeType(attr,AttributeType.INSENSITIVE_ATTRIBUTE);
        }
 else         if (atype.equals(Hierarchy.create().toString())) {
          try {
            config.getInput().getDefinition().setAttributeType(attr,readHierarchy(zip,prefix,ref));
          }
 catch (          final IOException e) {
            throw new SAXException(e);
          }
          config.getInput().getDefinition().setMinimumGeneralization(attr,Double.valueOf(min).intValue());
          config.getInput().getDefinition().setMaximumGeneralization(attr,Double.valueOf(max).intValue());
        }
 else {
          throw new SAXException(Resources.getMessage("String_Node_Str"));
        }
        attr=null;
        atype=null;
        dtype=null;
        ref=null;
        min=null;
        max=null;
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        attr=payload;
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        atype=payload;
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        dtype=payload;
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        ref=payload;
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        min=payload;
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        max=payload;
        return true;
      }
 else {
        return false;
      }
    }
    @Override protected boolean start(    final String uri,    final String localName,    final String qName,    final Attributes attributes) throws SAXException {
      if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        attr=null;
        dtype=null;
        atype=null;
        ref=null;
        min=null;
        max=null;
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        return true;
      }
 else       if (localName.equals("String_Node_Str")) {
        return true;
      }
 else {
        return false;
      }
    }
  }
);
  xmlReader.parse(inputSource);
}