RFR: 8338851: Hoist os::Posix::realpath() to os::realpath() and implement on Windows [v2]

David Holmes dholmes at openjdk.org
Thu Sep 5 21:09:51 UTC 2024


On Wed, 4 Sep 2024 20:10:54 GMT, Simon Tooke <stooke at openjdk.org> wrote:

>> This PR changes the status of realpath() from a Posix-specific API to a globally available API, i.e. adding it to the "Hotspot Porting API".  Code would refer to os::realpath() instead of os::Posix::realpath().
>> 
>> This requires the addition of a stub routine in os_posix.cpp and a Windows implementation of realpath(), using Windows _fullpath().
>> 
>> This PR depends on #20597 in that it removes the need for one #ifdef in that PR.  Because of that, this PR will be modified when and if #20597 is integrated.
>> 
>> Please note that guidelines for doing this appear in src/hotspot/share/runtime/os.hpp
>
> Simon Tooke has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - simplify windwos realpath() implementation
>  - get rid of os::posix::realpath() and os::win32::realpath()

Windows version looks better now, though still one issue that isn't really solvable - so I'd let it slide (especially as I think the errno settings should be removed anyway).

Thanks

src/hotspot/os/windows/os_windows.cpp line 5330:

> 5328:   if (result == nullptr) {
> 5329:     errno = ENAMETOOLONG;
> 5330:   }

This is a bit of an assumption. What if the name "includes a drive letter that isn't valid or can't be found"? Unfortunately Windows doesn't specify any further details beyond returning null.

src/hotspot/share/runtime/os.hpp line 672:

> 670: 
> 671:   // A safe implementation of realpath which will not cause a buffer overflow if the resolved path
> 672:   //   is longer than PATH_MAX.

Nit: remove leading space to align with text on previous line.

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

Marked as reviewed by dholmes (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/20683#pullrequestreview-2284073591
PR Review Comment: https://git.openjdk.org/jdk/pull/20683#discussion_r1746155484
PR Review Comment: https://git.openjdk.org/jdk/pull/20683#discussion_r1746156066


More information about the serviceability-dev mailing list