- `BuildFSSync.read()` and `info()` resolved a
requested path, checked that the result was
inside the build context, and then opened the
original path. A symlink replaced between the
check and the open was followed to its new
target, which could be outside the context.
-This change opens each requested file by
walking its path one component at a time from
a directory descriptor pinned on the context
root, using `FileDescriptorOps` from
`containerization`. Symlinks are followed only
when the target is relative and stays beneath
the context root. The metadata and the content
returned to the builder both come from the
same open descriptor.
- Behavior change: a symlink with an absolute
target is now rejected by `read()` and `info()`,
even when the target is inside the context.
Relative symlinks that stay inside the context
still work. `walk()`-based transfers are unchanged.
- Dependency: Requires `containerization` 0.50.0
for its `FileDescriptorOps` API enhancements.
This change updates the library from 0.52.0
to 0.52.1.