Skip to content

9.0.0 C++

Latest

Choose a tag to compare

@redboltz redboltz released this 25 Aug 08:58
· 3 commits to master since this release
e1b8bc8

2026-08-25 version 9.0.0

  • Add regression tests for the fixes below. (#1183)
  • Fix ext_ref comparison operators ignoring the last payload byte. (#1183)
  • Fix out-of-bounds write on self-move-assignment of the create object visitor. (#1183)
  • Fix broken array_ref<T[N]> comparison operators. (#1183)
  • Fix heap buffer overflow in vrefbuffer::migrate() caused by a wrong growth check. (#1183)
  • Fix v1 unpacker not applying str/bin/ext size limits on the reference path. (#1183)
  • Fix x3 parser treating uint8 values as negative integers. (#1183)
  • Fix double free / use-after-free in zone::swap() (C++03 only). (#1183)
  • Fix use-after-free from wrong member destruction order in zone move-assignment. (#1183)
  • Fix use-after-free after moving an unpacker (dangling referenced buffer hook). (#1183)
  • Fix out-of-bounds read converting a short STR into std::array<char, N> / <unsigned char, N>. (#1183)
  • Fix out-of-bounds read and null dereference converting an array whose size differs from the tuple arity. (#1183)
  • Fix null pointer dereference converting an empty array into a C array T[N]. (#1183)
  • Fix integer overflow in the unpacker buffer expansion size arithmetic. (#1183)

<< breaking changes >>

  • Fix ext32 max size truncation on 64bit by widening visit_ext size to size_t. (#1183)
    * If you have a custom visitor that implements visit_ext(), widen its size parameter from uint32_t to std::size_t:
    • Before: bool visit_ext(const char* v, uint32_t size)
    • After : bool visit_ext(const char* v, std::size_t size)