libEBML v1.3.1 & libMatroska v1.4.2 released

I’ve released new versions of libEBML (v1.3.1) and libMatroska (v1.4.2). Download links for the impatient:

Important news about the changes below; so please continue to read:

Both are binary-compatible to their respective previous releases and did not have their .so version bumped.

In both libraries several instances of out-of-bounds memory accesses have been fixed. libEBML will also not catch exceptions thrown by an IOCallback instance anymore.

The build system of both libraries has been switched to use autoconf, automake and libtool. Now you can (or have to) use the normal three-point procedure of »configure && make && make install«. The upside is that this should make cross-compilation easier.

In addition both libraries now come with pkg-config files. These are called »libebml« and »libmatroska« respectively (all lower-case). libMatroska’s configure script already uses pkg-config for determining libEBML’s location. Here the usual environment variables used for pkg-config are used as well (most notably PKG_CONFIG_PATH).

The upcoming release of MKVToolNix will require both of these two new versions.

Here’s libEBML’s ChangeLog since the previous release (v1.3.0):

  • 2015-01-04 Moritz Bunkus <moritz@bunkus.org>
    • Released v1.3.1.
    • EbmlElement::Render(): doesn’t catch exceptions anymore. Instead exceptions generated from the IOCallback class (e.g. if a write failed) are propagated to the caller.
  • 2014-12-21 Moritz Bunkus <moritz@bunkus.org>
    • build system: switched the build system from hand-crafted Makefiles to an autoconf/automake-based system. A pkg-config file will be installed as well; its name is »libebml«. Patch by Jan Engelhardt <jengelh@inai.de>.
  • 2014-12-20 Moritz Bunkus <moritz@bunkus.org>
    • EbmlMaster::Read(): when reading with SCOPE_ALL_DATA only those elements that could successfully be read will be kept (e.g. defective block groups will be dropped).
  • 2014-12-19 Moritz Bunkus <moritz@bunkus.org>
    • EbmlMemoryStream: add a new class for safe memory access that throws exception on failures.
  • 2014-12-18 Moritz Bunkus <moritz@bunkus.org>
    • EbmlMaster: Fixed read() trying to calculate the end position of elements with an unknown size. This avoids endless loops and assertions in certain cases. See https://trac.bunkus.org/ticket/1089

Here’s libMatroska’s ChangeLog since the previous release (v1.3.0):

  • 2015-01-04 Moritz Bunkus <moritz@bunkus.org>
    • Released v1.4.2.
  • 2014-12-21 Moritz Bunkus <moritz@bunkus.org>
    • build system: switched the build system from hand-crafted Makefiles to an autoconf/automake-based system. A pkg-config file will be installed as well; its name is »libmatroska«. Based on a similar patch for libEBML by Jan Engelhardt <jengelh@inai.de>.
  • 2014-12-20 Moritz Bunkus <moritz@bunkus.org>
    • KaxBlock::ReadData(): fixed several instances of unchecked memory access leading to invalid memory access/segmentation faults with invalid or broken data inside block groups/simple blocks.
  • 2014-12-19 Moritz Bunkus <moritz@bunkus.org>
    • KaxBlock::ReadInternalHead(): fixed a off-by-one buffer overflow if with EBML lacing and exactly one frame in the lace.

Have fun.