File transfer protocol: use O_NOFOLLOW when opening regular files

This commit is contained in:
Kovid Goyal 2026-06-03 06:18:31 +05:30
parent 9b89031a7f
commit 4aa4a5c056
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C
2 changed files with 3 additions and 1 deletions

View file

@ -188,6 +188,8 @@ Detailed list of changes
- When watching for changed config files do not recursively watch all sub directories of the directory containing the config file (:iss:`10102`)
- File transfer protocol: use O_NOFOLLOW when opening regular files
0.47.1 [2026-05-28]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View file

@ -547,7 +547,7 @@ def write_data(self, all_files: dict[str, 'DestFile'], data: bytes | memoryview,
if self.actual_file is None:
self.make_parent_dirs()
self.unlink_existing_if_needed()
flags = os.O_RDWR | os.O_CREAT | os.O_TRUNC | getattr(os, 'O_CLOEXEC', 0) | getattr(os, 'O_BINARY', 0)
flags = os.O_RDWR | os.O_CREAT | os.O_TRUNC | getattr(os, 'O_CLOEXEC', 0) | getattr(os, 'O_BINARY', 0) | getattr(os, 'O_NOFOLLOW', 0)
self.actual_file = open(os.open(self.name, flags, self.permissions), mode='r+b', closefd=True)
af = self.actual_file
if decompressed or is_last: