RFR: 8340923: The class LogSelection copies uninitialized memory

Johan Sjölen jsjolen at openjdk.org
Wed Sep 25 13:52:10 UTC 2024


The class LogSelection's custom constructor does not initialize the whole _tags array but is lacking a custom copy constructor and assignment operator. This means that any copy will copy uninitialized memory, which is undefined behavior. UBSAN has seen this happen, as reported by Matthias Baesken.

For some surrounding context: Unified Logging uses a statically defined array size (`LogTag::MaxTag`) but uses the `LogTag::__NO_TAG` to signify the end of the array. Think "NULL-terminated string but log tags".

We fill the whole array to avoid this issue. Specifically, we filll the remainder of the array with `LogTag::__NO_TAG`.

-------------

Commit messages:
 - Always initialize all memory

Changes: https://git.openjdk.org/jdk/pull/21185/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21185&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8340923
  Stats: 4 lines in 1 file changed: 4 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/21185.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21185/head:pull/21185

PR: https://git.openjdk.org/jdk/pull/21185


More information about the hotspot-runtime-dev mailing list