<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>The Expat XML Parser</title>
    <link rel="STYLESHEET" href="style.css" type="text/css" />
    <style type="text/css">
      body { margin: 0px; }
    </style>
  </head>
  <body>
    <table cellspacing="0" cellpadding="0" width="100%">
      <tr>
        <td class="corner"><img src="expat.png" alt="(Expat logo)" /></td>
        <td class="banner"><h2>The Expat XML Parser</h2></td>
      </tr>
      <tr>
        <td class="navbar"></td>
        <td class="content">

<p>Expat is an XML parser library written in C. It is a
stream-oriented parser in which an application registers handlers for
things the parser might find in the XML document (like start tags).
An <a href="http://www.xml.com/pub/1999/09/expat/index.html"
>introductory article</a> on using Expat is available on
<a href="http://www.xml.com/">xml.com</a>.</p>

<ul>
  <li>
  <a href="http://sourceforge.net/projects/expat/"
     >Expat project page (includes downloads)</a></li>
  <li>
  <a href="https://sourceforge.net/p/expat/mailman/"
     >Mailing lists</a></li>
  <li>
  <a href="#wrappers"
     >3rd-party wrappers (SAX, DOM, other language bindings)</a></li>
  <li>
  <a href="https://sourceforge.net/p/expat/code_git/ci/master/tree/"
     >Git repository</a>
  </li>
  <li>
  (<a href="dev/cvs.html"
     >CVS repository</a>
  (<a href="http://expat.cvs.sourceforge.net"
     >browse online</a>))</li>
  <li>
  <a href="https://sourceforge.net/p/expat/bugs/"
     >Bug reports</a></li>
  <li>
  <a href="dev/">Notes for Expat maintainers</a></li>
</ul>

<p>This project aims to maintain Expat for both current and future
users while improving the API to allow more reliable and robust access
from "scripting" languages such as Python and Perl.  We invite the
community to participate on the mailing lists to help shape the future
of Expat.</p>

<h3 id="news">News</h3>

<dl>
  <dt><em>18 June 2016</em>,
      Expat 2.2.0 released.
    </dt>
  <dd><p>Release 2.2.0 includes security &amp; other bug fixes.</p>
    <h4>Security fixes</h4>
    <dl>
      <dt><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0718">CVE-2016-0718</a>
          (<a href="https://sourceforge.net/p/expat/bugs/537/">issue 537</a>)</dt>
        <dd>Fix crash on malformed input</dd>
      <dt><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-4472">CVE-2016-4472</a></dt>
        <dd>Improve insufficient fix to
          <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1283">CVE-2015-1283</a> /
          <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2716">CVE-2015-2716</a>
          introduced with Expat 2.1.1</dd>
      <dt><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5300">CVE-2016-5300</a>
          (<a href="https://sourceforge.net/p/expat/bugs/499/">issue 499</a>)</dt>
        <dd>Use more entropy for hash initialization than the original fix to
          <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-0876">CVE-2012-0876</a></dd>
      <dt><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-6702">CVE-2012-6702</a>
          (<a href="https://sourceforge.net/p/expat/bugs/519/">issue 519</a>)</dt>
        <dd>Resolve troublesome internal call to srand that was introduced
          with Expat 2.1.0 when addressing <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-0876">CVE-2012-0876</a>
          (<a href="https://sourceforge.net/p/expat/bugs/496/">issue 496</a>)</dd>
    </dl>
    <h4>Bug fixes</h4>
    <ul>
      <li>Fix uninitialized reads of size 1 (e.g. in <code>little2_updatePosition</code>)</li>
      <li>Fix detection of UTF-8 character boundaries</li>
    </ul>
    <h4>Other changes</h4>
    <ul>
      <li>Fix compilation for Visual Studio 2010
        (<a href="https://sourceforge.net/p/expat/bugs/532/">bug 532</a>)</li>
      <li>Autotools: Resolve use of &quot;$&lt;&quot; to better support bmake</li>
      <li>Autotools: Add QA script &quot;qa.sh&quot; (and make target &quot;qa&quot;)</li>
      <li>Autotools: Respect <code>CXXFLAGS</code> if given</li>
      <li>Autotools: Fix &quot;make run-xmltest&quot;</li>
      <li>Autotools: Have &quot;make run-xmltest&quot; check for expected output</li>
      <li>CMake: Fix static build (<code>BUILD_shared=OFF</code>) on Windows
        (<a href="https://sourceforge.net/p/expat/patches/90/">patch 90</a>)</li>
      <li>CMake: Add soversion, support <code>-DNO_SONAME=yes</code> to bypass
        (<a href="https://sourceforge.net/p/expat/bugs/536/">bug 536</a>)</li>
      <li>CMake: Add suffix &quot;d&quot; to differentiate debug from release
        (<a href="https://sourceforge.net/p/expat/bugs/323/">bug 323</a>)</li>
      <li>CMake: Define <code>WIN32</code> with CMake on Windows</li>
      <li>Annotate memory allocators for GCC</li>
      <li>Address all currently known compile warnings</li>
      <li>Make sure that API symbols remain visible despite <code>-fvisibility=hidden</code></li>
      <li>Remove executable flag from source files</li>
      <li>Resolve <code>COMPILED_FROM_DSP</code> in favor of <code>WIN32</code></li>
    </ul>
    <h4>Special thanks to</h4>
    <ul>
      <li>Björn Lindahl</li>
      <li>Christian Heimes</li>
      <li>Cristian Rodríguez</li>
      <li>Daniel Krügler</li>
      <li>Gustavo Grieco</li>
      <li>Karl Waclawek</li>
      <li>László Böszörményi</li>
      <li>Pascal Cuoq</li>
      <li>Sergei Nikulov</li>
      <li>Thomas Beutlich</li>
      <li>Warren Young</li>
      <li>Yann Droneaud</li>
    </ul>
  </dd>
  <dt><em>12 March 2016</em>,
      Expat 2.1.1 released.
    </dt>
  <dd><p>Release 2.1.1 includes security &amp; other bug fixes.</p>
    <h4>Security fixes</h4>
    <ul>
      <li><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1283">CVE-2015-1283</a>
      &mdash;
      Multiple integer overflows in the <code>XML_GetBuffer</code> function
      (<a href="https://sourceforge.net/p/expat/bugs/528/">bug 528</a>)</li>
    </ul>
    <h4>Bug fixes</h4>
    <ul>
      <li>Fix potential null pointer dereference
      (<a href="https://sourceforge.net/p/expat/bugs/520/">bug 502</a>)</li>
      <li>Symbol <code>XML_SetHashSalt</code> was not exported
      (<a href="https://sourceforge.net/p/expat/bugs/520/">bug 520</a>)</li>
      <li>Output of <code>xmlwf -h</code> was incomplete</li>
    </ul>
    <h4>Other changes</h4>
    <ul>
      <li>Document behavior of calling <code>XML_SetHashSalt</code> with salt <code>0</code>
      (<a href="https://sourceforge.net/p/expat/bugs/503/">bug 503</a>)</li>
      <li>Minor improvements to man page <code>xmlwf(1)</code></li>
      <li>Improvements to the <em>experimental</em> CMake build system</li>
      <li>libtool now invoked with <code>--verbose</code></li>
    </ul>
  </dd>
  <dt><em>24 March 2012</em>,
      Expat 2.1.0 released.
    </dt>
  <dd><p>Release 2.1.0 includes security &amp; other bug fixes, new
    features, and updated build support.</p>
    <h4>Security fixes</h4>
    <ul>
      <li>Memory leak in poolGrow (<a
        href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-1148"
        >CVE-2012-1148</a>)</li>
      <li>Resource leak in readfilemap.c (<a
        href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-1147"
        >CVE-2012-1147</a>)</li>
      <li>Hash DOS attack (<a
        href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-0876"
        >CVE-2012-0876</a>)</li>
      <li>Buffer over-read and crash in big2_toUtf8 (<a
        href="http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-3560"
        >CVE-2009-3560</a>)</li>
      <li>Parser crash with special UTF-8 sequences (<a
        href="http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-3720"
        >CVE-2009-3270</a>)</li>
    </ul>
    <h4>New features</h4>
    <ul>
      <li>Added function XML_SetHashSalt that allows setting an initial
        value (salt) for hash calculations (part of the fix for bug <a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=3496608&amp;group_id=10127&amp;atid=110127"
        >3496608</a>).
      <li>When compiled with XML_ATTR_INFO defined, adds new API member
        XML_GetAttributeInfo() that allows retrieving the byte offsets
        for attribute names and values (patch <a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=3446384&amp;group_id=10127&amp;atid=310127"
        >3446384</a>).</li>
      <li>Added CMake build system (bug <a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=2990652&amp;group_id=10127&amp;atid=110127"
        >2990652</a>, patch <a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=3312568&amp;group_id=10127&amp;atid=310127"
        >3312568</a>).</li>
      <li>Added run-benchmark target to Makefile.in - relies on testdata
        module present in the same relative location as in the repository.
        </li>
    </ul>
    <h4>Bug fixes</h4>
    <ul>
      <li>Harmful XML_ParserCreateNS suggestion (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=1742315&amp;group_id=10127&amp;atid=110127"
        >1742315</a>)</li>
      <li>CVE-2012-1147 - Resource leak in readfilemap.c (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=2895533&amp;group_id=10127&amp;atid=110127"
        >2895533</a>)</li>
      <li>Expat build fails on linux-amd64 with gcc version&gt;=4.1 -O3 (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=1785430&amp;group_id=10127&amp;atid=110127"
        >1785430</a>)</li>
      <li>Build modifications using autoreconf instead of buildconf.sh (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=1983953&amp;group_id=10127&amp;atid=110127"
        >1983953</a>, <a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=2517952&amp;group_id=10127&amp;atid=110127"
        >2517952</a>, <a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=2517962&amp;group_id=10127&amp;atid=110127"
        >2517962</a>, <a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=2649838&amp;group_id=10127&amp;atid=110127"
        >2649838</a>)</li>
      <li>OBJEXT and EXEEXT support while building (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=2815947&amp;group_id=10127&amp;atid=110127"
        >2815947</a>, <a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=2884086&amp;group_id=10127&amp;atid=110127"
        >2884086</a>)</li>
      <li>CVE-2009-3720 - Parser crash with special UTF-8 sequences (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=1990430&amp;group_id=10127&amp;atid=110127"
        >1990430</a>)</li>
      <li>xmlwf should return non-zero exit status if not well-formed (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=2517938&amp;group_id=10127&amp;atid=110127"
        >2517938</a>)</li>
      <li>Wrong statement about XMLDecl in xmlwf.1 and xmlwf.sgml (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=2517946&amp;group_id=10127&amp;atid=110127"
        >2517946</a>)</li>
      <li>Dangling positionPtr after error (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=2855609&amp;group_id=10127&amp;atid=110127"
        >2855609</a>)</li>
      <li>CVE-2009-3560 - Buffer over-read and crash in big2_toUtf8() (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=2894085&amp;group_id=10127&amp;atid=110127"
        >2894085</a>)</li>
      <li>CVE-2012-1148 - Memory leak in poolGrow (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=2958794&amp;group_id=10127&amp;atid=110127"
        >2958794</a>)</li>
      <li>UNEXPECTED_STATE with a trailing "%" in entity value (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=3010819&amp;group_id=10127&amp;atid=110127"
        >3010819</a>)</li>
      <li>Unitialized memory returned from XML_Parse (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=3206497&amp;group_id=10127&amp;atid=110127"
        >3206497</a>)</li>
      <li>make check fails on mingw-w64 (<a
        href="https://sourceforge.net/tracker/?func=detail&amp;aid=87849&amp;group_id=10127&amp;atid=110127"
        >87849</a>)</li>
    </ul>
  </dd>
</dl>
<dl>
  <dt><em>5 June 2007</em>,
      Expat 2.0.1 released.
    </dt>
  <dd><p>Release 2.0.1 of the Expat XML parser is a bugfix release
    resolving both code and build related issues. Changes include:
    <ul>
      <li>Fixed: The character data handler's calling of XML_StopParser()
        was not handled properly; if the parser was stopped and the handler
        set to NULL, the parser would segfault.</li>
      <li>Fixed: Expat failed on EBCDIC systems as it assumed some character
        constants to be ASCII encoded.</li>
      <li>Minor cleanups of the test harness.</li>
      <li>Minor fixes for xmlwf and example programs.</li>
      <li>Fixes and improvements for the Windows platform.
        New Windows directory structure.</li>
      <li>Build fixes for various platforms: HP-UX, Tru64, Solaris 9.</li>
      <li>Build fixes for Unix:<br/>
        - Refreshed config.sub/config.guess.<br/>
        - Support both, DESTDIR and INSTALL_ROOT, without relying on GNU-Make specific features.<br/>
        - Patched configure.in to work better with Intel compiler.<br/>
        - Fixes to Makefile.in to have make check work correctly.</li>
      <li>Added Open Watcom support.</li>
    </ul>
  </dd>
</dl>
<dl>
  <dt><em>11 January 2006</em>,
      Expat 2.0.0 released.
    </dt>
  <dd><p>Release 2.0.0 of the Expat XML parser is the end point of the
    1.95.X series of releases. The goal was to solidify and stabilize
    the implementation of the given API, to add desirable features as
    long as they fit with the API, and to keep the API backwards compatible
    if extensions were required. Changes include:
    <ul><li>Fixed headers for use from C++.</li>
      <li>XML_GetCurrentLineNumber() and  XML_GetCurrentColumnNumber()
        now return unsigned integers.</li>
      <li>Added XML_LARGE_SIZE switch to enable 64-bit integers for
        byte indexes and line/column numbers.</li>
      <li>Added support for AmigaOS.</li>
      <li>Some mostly minor bug fixes. SF issues include: 1006708,
        1021776, 1023646, 1114960, 1156398, 1221160, 1271642.</li>
    </ul>
  </dd>
</dl>

<p><a href="oldnews.html">Old news archive</a></p>

<h3 id="wrappers">References &amp; 3rd-party Wrappers</h3>

<p>If you know of any additional articles or resources which should be
linked to from this page, please send email to <a
href="mailto:fdrake@acm.org">Fred Drake (fdrake&#64;acm.org)</a>.
We're especially interested in links to tutorial information and open
source interfaces to Expat from languages other than C.</p>

<ul>
  <li>
  <a href="http://www.jclark.com/xml/expat.html"
     >James Clark's original Expat page</a>, for Expat 1.2 and
  earlier</li>
  <li>
  <a href="http://www.xml.com/pub/1999/09/expat/index.html"
     >Introductory article</a> on using Expat on
  <a href="http://www.xml.com/">xml.com</a></li>
  <li>
  <a href="http://www.keplerproject.org/luaexpat/">LuaExpat</a> is a
  wrapper around Expat for the <a href="http://www.lua.org/">Lua</a>
  programming language.  The <a href=
  "http://www.keplerproject.org/luasoap/">LuaSOAP</a> library is a <a
  href="http://xml.coverpages.org/soap.html">SOAP</a> implementation
  built on top of <a href= "http://www.keplerproject.org/luaexpat/"
  >LuaExpat</a>.</li>
  <li>
  Perl's <code>XML::Parser</code> module is a wrapper built around a
  binding to Expat in the <code>XML::Parser::Expat</code> module.</li>
  <li>
  <a href="http://www.python.org/doc/current/lib/module-xml.parsers.expat.html"
     >Documentation for the Python interface to Expat</a>, part of the
  standard documentation for Python.</li>
  <li>
  <a href="http://saxdotnet.sourceforge.net/saxexpat.html"
    >SAXExpat.NET</a>, a <a href="http://www.microsoft.com/net/">.NET</a>
  wrapper for Expat, conforming to the 
  <a href="http://saxdotnet.sourceforge.net">SAX for .NET</a> specifications.</li>
  <li>
  The <a href="http://www.nongnu.org/scew/">Simple C Expat Wrapper</a>
  is a wrapper around Expat that provides a light-weight object model
  somewhat like a DOM.</li>
  <!-- Alex Conchillo Flaque: aconchillo at acm.org -->
  <li>
  <em><a href="http://www.codeproject.com/soap/expatimpl.asp"
         title="C++ Wrappers for the Expat XML Parser">C++ Wrappers
         for the Expat XML Parser</a></em>, an article by Tim Smith
    providing object-oriented wrappers for Expat.  The wrappers use
    some MFC-biased naming, but look interesting.</li>
  <li>
  <a href="http://www.jezuk.co.uk/cgi-bin/view/arabica" title="Arabica"
     >Arabica</a> -- an XML Parser toolkit for C++ programmers, with
  SAX2 implementations based on several parsers, including Expat.</li>
  <li>
  <a href="http://devzone.intellitree.com/projects/expatmm/"
     >ExpatMM -- C++ interface to Expat</a></li>
  <li>
  <a href="http://sourceforge.net/projects/kdsxml"
     >SAX2 Wrapper for using Expat in Delphi,</a>
  based on 
  <a href="http://saxforpascal.sourceforge.net"
     >"SAX for Pascal"</a>
   interface specs</li>
  <li>
  The <a href="http://tclxml.sourceforge.net/"
     >TclXML project</a> includes a <a href="http://tcl.activestate.com/"
     >Tcl</a> binding for Expat</li>
  <li>
  <a href="http://www.tdom.org/"
     >tDOM</a> is an alternate package providing XML support for <a
     href="http://tcl.activestate.com/" >Tcl</a>, based in part on
     Expat.</li>
  <li>
  <a href="http://www.phpbuilder.com/columns/justin20000428.php3"
     >Article on using Expat from PHP</a> on
  <a href="http://www.phpbuilder.com/">&lt;?PHPBuilder?&gt;</a>
  <br />(broken into lots of tiny pieces)</li>
  <li>
  <a href="http://expatobjc.sourceforge.net/"
     >Objective-C interface to Expat</a></li>
  <li>
  <a href="http://www.xs4all.nl/~mmzeeman/ocaml/">OCaml Expat</a> is a
  wrapper around Expat for the <a href="http://www.ocaml.org"
  >Objective Caml</a> language.</li>
  <li>
  <a href="http://www.yoshidam.net/Ruby.html#xmlparser"
     >Ruby interface to Expat</a></li>
  <li>
  <a href="http://www.latenightsw.com/freeware/XMLTools2/">XML Tools
  2</a> is an AppleScript scripting addition that allows AppleScript
  applications to work with XML data; it is based on Expat.</li>
  <li>
  <a href="http://www.simkin.co.uk/">Simkin</a> is an open source
  scripting language available under the GNU LGPL.  It can be embedded
  in XML and supports a DOM-like API backed by Expat.</li>
  <li>
  <a href="http://easysoap.sourceforge.net/">EasySoap</a> is a C++
  SOAP implementation which uses Expat.</li>
  <li>
  <a href=
  "http://www.codepedia.com/wiki/display.aspx?WikiID=1&amp;pagename=thunks"
  >A discussion</a> of another way to manage stateful callbacks, using
  Expat as a sample library.</li>
  <li>
  The <a href="http://sourceforge.net/projects/gobo-eiffel/">GOBO
  project</a> is working on an Eiffel binding for Expat.  Development
  is active and the package is fully supported in GOBO 3.0 and 3.1,
  though there isn't much status information about the Expat bindings
  on the website.  (Most activity is reportedly on the relevant
  mailing lists.)</li>
  <li>
  <a href="http://www.mitchenall.com/expat4d">Expat4D</a> is a plug-in
  for the <a href="http://www.4duk.com/">4th Dimension</a> application
  framework.</li>
</ul>

        </td>
      </tr>
      <tr>
        <td class="corner">
          <a href="http://sourceforge.net">
            <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=10127&amp;type=2"
              width="125" height="37" border="0" alt="SourceForge.net Logo" />
          </a>
        </td>
      </tr>
    </table>
  </body>
</html>
