[jdk17u-dev] RFR: 8332825: ubsan: guardedMemory.cpp:35:11: runtime error: null pointer passed as argument 2, which is declared to never be null

Matthias Baesken mbaesken at openjdk.org
Fri Sep 13 14:23:16 UTC 2024


On Thu, 12 Sep 2024 10:12:54 GMT, Goetz Lindenmaier <goetz at openjdk.org> wrote:

>> Hi Goetz!
>> 
>> `innerp` is the result of 
>> 
>> 
>>   u_char* get_user_ptr() const {
>>     assert(_base_addr != nullptr, "Not wrapping any memory");
>>     return _base_addr + sizeof(GuardHeader);
>>   }
>> 
>> 
>> which cannot return null. _base_addr is the result of a malloc and we only ever enter this path if that malloc succeeded. It is also asserted at least twice.
>> 
>> Cheers, Thomas
>
> Yes, but the new code checks whether "ptr" is null. That is passed in as an argument.

we call
`GuardedMemory::wrap_copy(no_data, 0);`
This makes `ptr == NULL / nullptr` .
See the full backtrace here https://github.com/openjdk/jdk/pull/19382
It is a clean backport so should be the same in 17.  The check was added to handle to no_data / length 0 case .

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

PR Review Comment: https://git.openjdk.org/jdk17u-dev/pull/2829#discussion_r1758955665


More information about the jdk-updates-dev mailing list