RFR: 8368522: (fs) BasicFileAttributes Linux musl 1.2.5 incompatibility with statx

Brian Burkhalter bpb at openjdk.org
Thu Oct 9 00:23:04 UTC 2025


On Tue, 7 Oct 2025 12:54:21 GMT, Aleksei Voitylov <avoitylov at openjdk.org> wrote:

> This cleanup replaces #ifdefs with a standard #include <stdint.h>. Using standard types is less prone to errors.
> 
> JDK-8368522 was reported on ARM32 with musl libc, which is not a supported configuration, but I still believe this code cleanup is worth it.
> 
> After the introduction of statx with musl 1.2.5, a buffer overflow issue with statx() call handling started happening on ARM32. The root cause is incorrect size of __uint64_t type definition in the JDK for musl libc, where it was defined as 4 bytes (unsigned long int) for 32-bit systems instead of 8 bytes (unsigned long long).
> 
> The mismatch between JDK's my_statx structure and kernel's statx structure causes stack corruption when statx() writes beyond the statx_buf boundaries, overwriting adjacent variables, including the 'attrs' argument that was later passed to copy_statx_attributes() function and caused a segfault there.
> 
> Built and ran jtreg on standard OpenJDK platforms with no regressions, including the altered test.

In its current form this change passes on Linux and macOS in our mainline CI pipeline.

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

PR Comment: https://git.openjdk.org/jdk/pull/27674#issuecomment-3383632980


More information about the nio-dev mailing list