                                                     -*- coding: utf-8 -*-
Changes with APR-util 1.6.2

  *) SECURITY: CVE-2022-25147 (cve.mitre.org)
     Integer Overflow or Wraparound vulnerability in apr_base64 functions 
     of Apache Portable Runtime Utility (APR-util) allows an attacker to 
     write beyond bounds of a buffer.
     
  *) Teach configure how to find and build against MariaDB 10.2. PR 61517
     [Kris Karas <bugs-a17 moonlit-rail.com>]

  *) apr_crypto_commoncrypto: Remove stray reference to -lcrypto that
     prevented commoncrypto being enabled. [Graham Leggett]

  *) Add --tag=CC to libtool invocations. PR 62640. [Michael Osipov]

  *) apr_dbm_gdbm: Fix handling of error codes. This makes gdbm 1.14 work.
     apr_dbm_gdbm will now also return error codes starting with
     APR_OS_START_USEERR, as apr_dbm_berkleydb does, instead of always
     returning APR_EGENERAL. [Stefan Fritsch]

Changes with APR-util 1.6.1

  *) Win32: Add function exports from new apr_crypto API's missing in 1.6.0.

  *) Win32: Introduce XML_PARSER build-time variable to select the expat
     library name to be linked to libaprutil-1.dll. See Makefile.win

  *) Win32: Removed lingering xml/xml.dsp project forked from the expat
     Project in the 1.9x era. Use expat's maintained build schema instead,
     prior to building apr-util.

  *) apr_crypto: Fix compatibility with LibreSSL.  PR 61596.
     [Bernard Spil <brnrd freebsd.org>, Yann Ylavic]

  *) sdbm: better database/page validation to fail cleanly when corrupted.
     [Yann Ylavic]

Changes with APR-util 1.6.0

  *) The expat dependency of apr-util is no longer built with apr-util.
     Install expat (including development headers and libraries) first
     before building apr-util. [https://libexpat.github.io/]

  *) Mark apr_dbd_freetds as unsupported, and remove it from all builds
     [Nick Kew]

  *) Update MySQL build to stop using libmysqlclient_r.
     [Petr Sumbera <petr.sumbera oracle.com>]

  *) apr_buckets: Add apr_bucket_file_set_buf_size() which allows to configure
     the size of the buffer used to read files.  [Yann Ylavic]

  *) apr_crypto: avoid excessive iteration in bcrypt hash.
     [Hanno Böck <hanno hboeck.de>]

  *) apr_siphash: Implement keyed hash function SipHash.  [Yann Ylavic]

  *) apr_crypto: Add apr_crypto_key() function which supports keys
     generated from a passphrase or a raw secret provided by the caller.
     Deprecate apr_crypto_passphrase(). [Graham Leggett]

  *) apr_crypto_nss: Ensure the SECItem returned by PK11_ParamFromIV
     is properly freed. [Graham Leggett]

  *) apr_crypto: Don't cache the driver if initialisation fails. This
     stops the second and subsequent attempt to use the API from failing
     claiming the library is not initialised. [Graham Leggett]

  *) apr_crypto: Add a native CommonCrypto implementation for iOS and OSX
     where OpenSSL has been deprecated. [Graham Leggett]

  *) apr_xml_to_text: Add style APR_XML_X2T_PARSED to maintain a
     consistent namespace prefix. [Jari Urpalainen
     <jari.urpalainen nokia.com>]

Changes with APR-util 1.5.x and later:

  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.5.x/CHANGES?view=markup

Changes with APR-util 1.4.x and later:

  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.4.x/CHANGES?view=markup

Changes for APR-util 1.3.x and later:

  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.3.x/CHANGES?view=markup

Changes for APR-util 1.2.x and later:

  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.2.x/CHANGES?view=markup

Changes for APR-util 1.1.x and later:

  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.1.x/CHANGES?view=markup

Changes for APR-util 1.0.x and later:

  *) http://svn.apache.org/viewvc/apr/apr-util/branches/1.0.x/CHANGES?view=markup

Changes for APR-util 0.9.x and later/earlier:

  *) http://svn.apache.org/viewvc/apr/apr-util/branches/0.9.x/CHANGES?view=markup
