Page MenuHomeFreeBSD

cp: fix -R recursion detection
ClosedPublic

Authored by kevans on Mar 24 2022, 2:54 AM.
Tags
None
Referenced Files
Unknown Object (File)
Mar 11 2024, 4:57 PM
Unknown Object (File)
Mar 11 2024, 4:57 PM
Unknown Object (File)
Mar 11 2024, 4:48 PM
Unknown Object (File)
Mar 8 2024, 2:28 AM
Unknown Object (File)
Mar 7 2024, 1:14 PM
Unknown Object (File)
Feb 3 2024, 4:17 AM
Unknown Object (File)
Jan 5 2024, 8:44 AM
Unknown Object (File)
Jan 5 2024, 8:40 AM
Subscribers

Details

Reviewers
bapt
Group Reviewers
Klara
Commits
rGf00f8b4fbd26: cp: fix -R recursion detection
Summary

The correct logic is a lot simpler than the previous iteration. We
record the base fts_name to avoid having to worry about whether we
needed the root symlink name or not (as applicable), then we can simply
shift allof that logic to after path translation to make it less
fragile.

If we're copying to DNE, then we'll have swapped out the NULL root_stat
pointer and then attempted to recurse on it. The previously nonexistent
directory shouldn't exist at all in the new structure, so just back out
from that tree entirely and move on.

The tests have been amended to indicate our expectations better with
subdirectory recursion. If we copy A to A/B, then we expect to copy
everything from A/B/* into A/B/A/B, with exception to the A that we
create in A/B.

Sponsored by: Klara, Inc.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable