BDE 4.12.0 Release

Schedule

  • The BDE team announces that the BDE 4.12.0 production release was completed on Monday, August 12, 2024.

BDE 4.12.0 Release Highlights

Security Improvement to bdls::FilesystemUtil::remove

This release fixes CVE-2022-21658, which is a time-of-check/time-of-use (TOCTOU) vulnerability that had affected bdls::FilesystemUtil::remove. An attacker could replace a directory with a symbolic link after remove checked that it was a directory, causing remove to delete the files pointed to by the attacker-controlled symlink. The fix for this issue relies on the availability of ::unlinkat and ::openat, both of which are available since POSIX-1-2008 to address exactly this kind of TOCTOU issue.

bdlde_base64decoder Now 3-7x faster on Linux

This release adds vectorization to bdlde_base64decoder resulting in a 3-7x speedup in the common case on Linux.

Thanks to Cameron Desrochers for the contribution!

baltzo TimeZone Support Updated for RHEL8

The baltzo time zone components have been updated to support the time zone data file format distributed by default on Linux RHEL8.

The IANA Timezone data files on RHEL8 have an updated format containing a special sentinel transition that is added by the timezone compiler with a timestamp of -(2**59) — a very large negative value. These datafiles previously could not be loaded by the baltzo time zone components because the sentinel transition was outside of the representable range of bdlt::Datetime.

baltzo::DataFileLoader::loadTimeZone() and baltzo::ZoneinfoBinaryReader::read() methods have been updated to handle this new sentinel transition, replacing it with the sentinel transition at “Jan 01, 0001 00 00.000” (i.e., the first representable BDE datetime value, bdlt::Datetime(1, 1, 1)). The original data file transitions can still be obtained, for informational purposes, using baltzo::DataFileLoader::loadTimeZoneRaw() and baltzo::ZoneinfoBinaryReader::readRaw() methods respectively.

Fixed DRQSs:

Summary

bdls::FilesystemUtil::remove – fix security vulnerabilty

balst_stacktraceresolverimpl_elf: DWARF (line #, file name) information failing

Mismatch between bsls::AlignmentUtil::BSLS_MAX_ALIGNMENT and std::max_align_t

Confirm contract for BlobUtilHexDumper

baltzo: Errors when loading NY TZ record from RHEL8 environment

Add operator<< to bslma::TestAllocator

Optimize base64 decoder slightly for 3-7x speedup

Ensure atomic operations are 2-s complement

UBSAN: bdlbb_blobutil

Address UBSAN issues in bdlsb_fixedmemoutput

Address UBSAN issues in bslma_bslallocator

Address UBSAN issues in bsls_atomic

Reduce bdl clang-15 td warnings

Reduce sim_cpp11_features spam

Please correct lambda capture warning in bdlc_hashtable

Further reduce bdl clang-15 td warnings

BALM_METRICS_TIME_BLOCK macros incorrectly handle default MetricsManager replacement

Reduce non-bsl nb warnings

unsigned long type BALL log attributes not appearing in logged JSON

bdls_FilesystemUtil::remove add ‘O_NONBLOCK’ to ::openat for balb_pipecontrolchannel.t.cpp

Correct warnings introduced by bdlde_base64decoder.h line 991

Reduce bsl clang-15 warnings

Please fix bdlcc_objectpool nightly test failures

Please fix bslstl_function_invokerutil nightly failure

please update bslstl_function_invokerutil_cpp03.t.cpp

Reduce bsl clang-15 nb warnings

Clean bdl nightly td warnings

bdls::FilesystemUtil::remove – fails on Unix sockets

Address UB in bslma_allocator.t

Add MemorySanitizer annotation for backtrace

Fix lifetime of stack array in ball_attributecontext.t.cpp

Reduce bsl td warnings

Correct bslma_polymorphicallocator.t.cpp deprecation warning

‘dbg_asan_32’ is not build with Address Sanitizer on Windows with Visual Studio