Skip to content

CI pre-flight: fix: skip reparse points during -r on Windows - #1

Draft
Nmd-sketch wants to merge 1 commit into
devfrom
fix/windows-reparse-point
Draft

Nmd-sketch wants to merge 1 commit into
devfrom
fix/windows-reparse-point

Conversation

@Nmd-sketch

Copy link
Copy Markdown
Owner

Pre-flight CI run for meta#4860 before it leaves draft. Same branch/code; this PR gets closed once the matrix is green.

UTIL_isLink always returned 0 on non-POSIX platforms, and the Windows
branch of UTIL_prepareFileList() had no reparse-point guard. As a
result -r traversed junctions and symlinks found inside the input tree,
combined with --rm this compressed and deleted files located outside
the directory the user passed.

Added a _WIN32 branch to UTIL_isLink() querying GetFileAttributesA(),
with the FILE_ATTRIBUTE_REPARSE_POINT test applied only when the
lookup succeeds. Such entries are skipped in UTIL_prepareFileList()
unless --follow-links is set, mirroring the POSIX branch, including
its level-2 warning. Covered by a new playTests.sh test asserting
that a junction (Windows) or symlink (POSIX) pointing outside the tree
is left untouched by -r --rm
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant