RFR: 8322565 (zipfs) Files.setPosixPermissions should preserve 'external file attributes' bits
Eirik Bjorsnos
duke at openjdk.org
Wed Dec 20 21:08:53 UTC 2023
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 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`.
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)
-------------
Commit messages:
- Preserve non-permission 'external file attributes' bits when setting posix permissions
Changes: https://git.openjdk.org/jdk/pull/17170/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=17170&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8322565
Stats: 83 lines in 2 files changed: 75 ins; 4 del; 4 mod
Patch: https://git.openjdk.org/jdk/pull/17170.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/17170/head:pull/17170
PR: https://git.openjdk.org/jdk/pull/17170
More information about the core-libs-dev
mailing list