RFR: 8308445: Linker should check that capture state segment is big enough
Maurizio Cimadamore
mcimadamore at openjdk.org
Tue Jun 6 17:18:44 UTC 2023
On Tue, 6 Jun 2023 16:22:41 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
> Fix the bug mentioned in the JBS issue.
>
> The implementation is updated to slice the capture state segment using the capture state layout. This checks both that the segment is big enough, and that it is properly aligned.
>
> Additionally, I added a check for `MS::NULL` since this is also an illegal value we can catch early.
>
> Test cases are added for all three invalid values.
>
> Testing: `jdk_foreign` test suite.
Looks good
src/java.base/share/classes/jdk/internal/foreign/abi/SharedUtils.java line 114:
> 112: MH_CHECK_SYMBOL = lookup.findStatic(SharedUtils.class, "checkSymbol",
> 113: methodType(void.class, MemorySegment.class));
> 114: MH_SLICE_CAPTURE_SEGMENT = lookup.findStatic(SharedUtils.class, "checkCaptureSegment",
Is the name of the field correct?
test/jdk/java/foreign/capturecallstate/TestCaptureCallState.java line 152:
> 150: {Arena.ofAuto().allocate(1), IndexOutOfBoundsException.class, ".*Out of bound access on segment.*"},
> 151: {MemorySegment.NULL, IllegalArgumentException.class, ".*Capture segment is NULL.*"},
> 152: {Arena.ofAuto().allocate(Linker.Option.captureStateLayout().byteSize() + 3).asSlice(3), // misaligned
This last one is very nice!
-------------
Marked as reviewed by mcimadamore (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/14339#pullrequestreview-1465703809
PR Review Comment: https://git.openjdk.org/jdk/pull/14339#discussion_r1220030249
PR Review Comment: https://git.openjdk.org/jdk/pull/14339#discussion_r1220033212
More information about the core-libs-dev
mailing list