Program: 66758
Project: 66758
Buggy source:
public boolean startElement(XPathFragment xPathFragment,UnmarshalRecord unmarshalRecord,Attributes atts){
  try {
    unmarshalRecord.removeNullCapableValue(this);
    XMLField xmlField=(XMLField)xmlBinaryDataMapping.getField();
    XPathFragment lastFragment=xmlField.getLastXPathFragment();
    if (!lastFragment.isAttribute()) {
      BinaryMappingContentHandler handler=new BinaryMappingContentHandler(unmarshalRecord,this,this.xmlBinaryDataMapping);
      String qnameString=xPathFragment.getLocalName();
      if (xPathFragment.getPrefix() != null) {
        qnameString=xPathFragment.getPrefix() + XMLConstants.COLON + qnameString;
      }
      handler.startElement(xPathFragment.getNamespaceURI(),xPathFragment.getLocalName(),qnameString,atts);
      unmarshalRecord.getXMLReader().setContentHandler(handler);
    }
 else     if (lastFragment.isAttribute()) {
      String value=atts.getValue(lastFragment.getNamespaceURI(),lastFragment.getLocalName());
      Object fieldValue=null;
      if (xmlBinaryDataMapping.isSwaRef()) {
        if (unmarshalRecord.getUnmarshaller().getAttachmentUnmarshaller() != null) {
          if (xmlBinaryDataMapping.getAttributeClassification() == XMLBinaryDataHelper.getXMLBinaryDataHelper().DATA_HANDLER) {
            fieldValue=unmarshalRecord.getUnmarshaller().getAttachmentUnmarshaller().getAttachmentAsDataHandler(value);
          }
 else {
            fieldValue=unmarshalRecord.getUnmarshaller().getAttachmentUnmarshaller().getAttachmentAsByteArray(value);
          }
          xmlBinaryDataMapping.setAttributeValueInObject(unmarshalRecord.getCurrentObject(),XMLBinaryDataHelper.getXMLBinaryDataHelper().convertObject(fieldValue,xmlBinaryDataMapping.getAttributeClassification(),unmarshalRecord.getSession()));
        }
      }
 else {
        fieldValue=((XMLConversionManager)unmarshalRecord.getSession().getDatasourcePlatform().getConversionManager()).convertSchemaBase64ToByteArray(value);
        xmlBinaryDataMapping.setAttributeValueInObject(unmarshalRecord.getCurrentObject(),XMLBinaryDataHelper.getXMLBinaryDataHelper().convertObject(fieldValue,xmlBinaryDataMapping.getAttributeClassification(),unmarshalRecord.getSession()));
      }
    }
    return true;
  }
 catch (  SAXException ex) {
    throw XMLMarshalException.unmarshalException(ex);
  }
}

Fixed version (ground truth):
public boolean startElement(XPathFragment xPathFragment,UnmarshalRecord unmarshalRecord,Attributes atts){
  try {
    unmarshalRecord.removeNullCapableValue(this);
    XMLField xmlField=(XMLField)xmlBinaryDataMapping.getField();
    XPathFragment lastFragment=xmlField.getLastXPathFragment();
    BinaryMappingContentHandler handler=new BinaryMappingContentHandler(unmarshalRecord,this,this.xmlBinaryDataMapping);
    String qnameString=xPathFragment.getLocalName();
    if (xPathFragment.getPrefix() != null) {
      qnameString=xPathFragment.getPrefix() + XMLConstants.COLON + qnameString;
    }
    handler.startElement(xPathFragment.getNamespaceURI(),xPathFragment.getLocalName(),qnameString,atts);
    unmarshalRecord.getXMLReader().setContentHandler(handler);
    return true;
  }
 catch (  SAXException ex) {
    throw XMLMarshalException.unmarshalException(ex);
  }
}