Integrated: 8306561: Possible out of bounds access in print_pointer_information

Thomas Obermeier duke at openjdk.org
Thu Nov 2 09:54:14 UTC 2023


On Thu, 26 Oct 2023 16:11:00 GMT, Thomas Obermeier <duke at openjdk.org> wrote:

> MallocTracker::print_pointer_information in src/hotspot/share/services/mallocTracker.cpp is called to check the highest pointer address of the reserved region. To do so it aligns the test pointer down to the next 8 Byte boundary and casts this address to class MallocHeader in order to use this classes eye-catcher member _canary for validation. Method looks_valid() dereferences _canary's content. _canary has an offset of 14 bytes relative to the class. Therefore it resides outside the reserved region for the highest pointer address, which causes a segmentation violation.
> 
> We would expect the same error also for other platforms than AIX as memory is read, which is not allocated. Interestingly, Linux seems to allow this access for 5 times 4K above the reserved region.
> 
> As a solution, looks_valid() should check _canary's address as being invalid, and return false immediately.

This pull request has now been integrated.

Changeset: d6ce62eb
Author:    Thomas Obermeier <thomas.obermeier at sap.com>
Committer: Matthias Baesken <mbaesken at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/d6ce62ebc01eb483b486af886d9b79f60ff87de1
Stats:     5 lines in 2 files changed: 1 ins; 3 del; 1 mod

8306561: Possible out of bounds access in print_pointer_information

Reviewed-by: stuefe, clanger

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

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


More information about the hotspot-dev mailing list