On Wed, 20 Dec 2023 18:51:08 GMT, Eirik Bjørsnøs <eir...@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 <eir...@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

Reply via email to