RFR: 8338888: SystemDictionary::class_name_symbol has incorrect length check
Kim Barrett
kbarrett at openjdk.org
Mon Aug 26 08:15:03 UTC 2024
On Mon, 26 Aug 2024 02:49:42 GMT, David Holmes <dholmes at openjdk.org> wrote:
> The name length check was incorrectly truncating the length to an int, which is wrong if the name is > `INT_MAX`. Added a test for this case to the existing test cases and fixed an issue with the call to `Exceptions::fthrow` that can hit the `INT_MAX` limitations of `os::vsnprintf` (this is the first in a serious of fixes that will mainly be done under [JDK-8328882](https://bugs.openjdk.org/browse/JDK-8328882) or subtasks thereof).
>
> Testing:
> - updated test
> - tiers 1-3 (sanity)
>
> Thanks
src/hotspot/share/classfile/systemDictionary.cpp line 269:
> 267: // To avoid internal snprintf INT_MAX limit we reduce the maximum length
> 268: // of name to print, by the length of the rest of the formatted message.
> 269: int print_limit = INT_MAX - 45;
I was wondering where that "45" came from. It appears to be the length of the format string below,
including the format directives. That seems wrong. Doesn't it need to account for the *expansion*
of the "%d" directive?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20709#discussion_r1730867402
More information about the hotspot-runtime-dev
mailing list