On Sat, 9 Aug 2025 19:50:14 GMT, Philippe Marschall <[email protected]> wrote:

> Reduce the usage of JNI in the Linux attach provider by making more use of 
> the `Path` API.
> 
> - use the `Path` API to read file permissions
> - use the `Path` API  to write to and read from Unix domain sockets
> - use JDK internal APIs to access the euid and eguid
> 
> After this the sole usage of JNI in the Linux attach provider will be to send 
> a signal using `kill`.
> 
> I ran the tier1 and serviceability test suites and they both pass. I verified 
> I can attach to and attach using a locally built JDK. I didn't do any Docker 
> related tests.
> 
> I split the changes into two commits:
> 
> - The first commit ports the permission check code more or less directly from 
> C to Java using integer based checks.
> - The second commit changes the permission check code to use higher level 
> Java abstractions (`UserPrincipal`, `Set`, ...)
> 
> I hope this makes it easier to review and verify the changes preserve the 
> semantics.
> 
> To the best of my knowledge `uid_t` is an unsigned 32 bit integer. 
> `VM#geteuid()` returns it as `long`, unsigned. However 
> `UnixUserPrincipals#fromUid` expects an `int`, I believe casting is the 
> correct way to convert in this case.
> 
> I tried to keep unrelated changes to `VirtualMachineImpl` to a minimum. I did 
> however replace all usages of `java.io.File` with `java.nio.file.Path` and 
> made two methods `static`. We could get rid of the `socket_path` instance 
> variable if we instead use `socket_address` to flag a disconnect.
> 
> Ultimately the same changes can be applied to the macOS an AIX 
> implementations.

This pull request has been closed without being integrated.

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

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

Reply via email to