pakrym-oai
e3e5ad2847
Harden unsandboxed patch filesystem access ( #39659 )
...
## Why
An `apply_patch` path can be replaced with a symlink after verification, allowing an unsandboxed patch operation to reach a different file than the one that was approved.
## What changed
- Add `follow_symlinks` options to executor filesystem reads, writes, metadata lookups, directory creation, and removal, including the corresponding `followSymlinks` protocol fields.
- Implement no-follow filesystem operations on Unix and Windows that reject links in any path component and restrict file access to regular files.
- Run `apply_patch` with symlink traversal disabled when an otherwise-required sandbox is bypassed, while retaining the existing follow-symlink default for standalone callers.
## Testing
- Cover leaf and ancestor symlinks across patch add, update, delete, and move operations, including a path swap after verification.
- Exercise local and remote no-follow filesystem behavior, concurrent directory creation, special-file rejection, and Windows reparse points.
GitOrigin-RevId: 43fd479084891493ce13564fbd894b98f329c6dd
2026-08-20 08:10:08 +00:00
..
2026-08-20 07:52:35 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 05:29:12 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 08:10:08 +00:00
2026-08-20 08:10:08 +00:00
2026-08-20 07:03:02 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 08:07:06 +00:00
2026-08-17 11:44:56 +00:00
2026-07-09 03:40:08 +00:00
2026-08-13 00:00:16 +00:00
2026-08-14 05:49:33 +00:00
2026-08-17 13:16:05 +00:00
2026-08-13 00:00:16 +00:00
2026-08-19 15:47:56 +00:00
2026-08-20 08:10:08 +00:00
2026-08-18 07:32:03 +00:00
2026-08-20 07:52:35 +00:00
2026-08-20 07:52:35 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 07:52:35 +00:00
2026-08-13 21:53:52 +00:00
2026-08-19 15:21:11 +00:00
2026-06-19 05:35:57 -07:00
2026-08-19 18:01:14 +00:00
2026-06-18 14:09:38 +02:00
2026-08-17 21:49:30 +00:00
2026-08-19 04:46:58 +00:00
2026-08-20 05:29:12 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 08:10:08 +00:00
2026-08-18 22:10:43 +00:00
2026-08-20 08:10:08 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-06-15 21:53:47 -07:00
2026-08-13 00:00:16 +00:00
2026-08-19 01:15:10 +00:00
2026-08-04 15:23:43 +00:00
2026-08-20 08:10:08 +00:00
2026-08-20 08:10:08 +00:00
2026-08-19 01:26:16 +00:00
2026-08-14 04:46:04 +00:00
2026-08-20 06:29:32 +00:00
2026-05-18 21:03:51 -07:00
2026-08-13 00:00:16 +00:00
2026-08-15 16:58:08 +00:00
2026-08-17 10:01:59 +00:00
2026-08-17 11:44:56 +00:00
2026-08-13 00:00:16 +00:00
2026-08-14 18:26:20 +00:00
2026-08-18 22:20:32 +00:00
2026-08-14 07:52:38 +00:00
2026-08-20 08:10:08 +00:00
2026-08-20 08:10:08 +00:00
2026-08-13 02:40:49 +00:00
2026-06-08 13:55:15 -07:00
2026-08-13 00:00:16 +00:00
2026-08-17 11:44:56 +00:00
2026-08-17 11:44:56 +00:00
2026-08-19 01:26:16 +00:00
2026-07-14 10:37:23 +00:00
2026-08-14 19:07:15 +00:00
2026-07-22 20:23:35 +00:00
2026-08-13 00:00:16 +00:00
2026-08-18 18:41:40 +00:00
2026-08-01 01:17:26 +00:00
2026-08-20 08:10:08 +00:00
2026-08-17 11:44:56 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-18 19:17:09 +00:00
2026-08-20 08:10:08 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-14 05:49:33 +00:00
2026-07-22 00:50:28 +00:00
2026-08-18 05:46:08 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 23:13:37 +00:00
2026-08-20 08:10:08 +00:00
2026-08-20 08:10:08 +00:00
2026-08-13 00:00:16 +00:00
2026-07-23 19:19:35 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 05:42:20 +00:00
2026-08-20 05:29:12 +00:00
2026-06-23 14:27:13 -07:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 08:10:08 +00:00
2026-08-20 08:10:08 +00:00
2026-08-14 18:26:20 +00:00
2026-08-16 00:57:28 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 07:29:43 +00:00
2026-08-17 10:01:59 +00:00
2026-08-13 00:00:16 +00:00
2026-08-14 12:21:08 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 19:25:05 +00:00
2026-08-07 22:41:20 +00:00
2026-08-20 07:52:35 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 08:10:08 +00:00
2026-08-10 19:26:52 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 08:10:08 +00:00
2026-08-14 01:23:59 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 07:48:46 +00:00
2026-08-20 08:10:08 +00:00
2026-08-20 06:29:32 +00:00