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