Integrated: 8322565 (zipfs) Files.setPosixPermissions should preserve 'external file attributes' bits
Eirik Bjørsnøs
eirbjo at openjdk.org
Wed Jan 10 21:45:33 UTC 2024
On Wed, 20 Dec 2023 18:51:08 GMT, Eirik Bjørsnøs <eirbjo at openjdk.org> wrote:
> This PR suggests that `Files.setPosixPermissions`as implemented by `ZipFileSystem` should preserve the leading seven bits of the 'external file attributes' field. These bits contain the 'file type', 'setuid', 'setgid', and 'sticky' bits. These are unrelated to permissions and should not be modified by this operation.
>
> The fix is to update `Entry.readCEN` to read all 16 bits instead of just the trailing 12 and to update `ZipFileSystem.setPermissions` to preserve the leading 7 bits when updating the trailing 9 permission-related bits of the `Entry.posixPerms` field.
>
> The PR adds a new test `TestPosix.preserveRemainingBits()` which verifies that the leading 7 bits are not affected by `Files.setPosixPermissions`. This test also verifies that operations not related to POSIX, such as Files.setLastModifiedTime does not affect the 'external file attributes' value.
>
> Note that this PR does not aim to preserve the leading seven bits for the case when `Files.setPosixPermissions` is called with a `null` permission set. (The implementation currently interprets this as a signal that the 'external file attributes' should not be populated and the 'version made by' OS will be MSDOS instead of Unix)
This pull request has now been integrated.
Changeset: e70cb4e6
Author: Eirik Bjørsnøs <eirbjo at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/e70cb4e6c7fe131d585cfa3ff3b4dbeb4f9bbccd
Stats: 145 lines in 2 files changed: 109 ins; 9 del; 27 mod
8322565: (zipfs) Files.setPosixPermissions should preserve 'external file attributes' bits
Reviewed-by: clanger, lancea
-------------
PR: https://git.openjdk.org/jdk/pull/17170
More information about the core-libs-dev
mailing list