Skip to content
Permalink
Browse files

Fix cp permissions when copying symlink contents, and add test.

  • Loading branch information...
landley committed Jan 12, 2019
1 parent bf76b49 commit c68fa66380ab45957acbfb5dc3b498bb19fe880d
Showing with 9 additions and 0 deletions.
  1. +7 −0 tests/cp.test
  2. +2 −0 toys/posix/cp.c
@@ -89,6 +89,13 @@ testing "-r dir1/* dir2" \
"cp -r one/* dir2 && diff -r one dir2 && echo yes" "yes\n" "" ""
rm -rf one dir dir2

touch walrus
chmod 644 walrus
ln -s walrus woot

testing "symlink dest permissions" "cp woot carpenter && stat -c %A carpenter" \
"-rw-r--r--\n" "" ""

# cp -r ../source destdir
# cp -r one/two/three missing
# cp -r one/two/three two
@@ -268,6 +268,8 @@ static int cp_node(struct dirtree *try)
catch = try->name;
break;
}
// When copying contents use symlink target's attributes
if (S_ISLNK(try->st.st_mode)) fstat(fdin, &try->st);
fdout = openat(cfd, catch, O_RDWR|O_CREAT|O_TRUNC, try->st.st_mode);
if (fdout >= 0) {
xsendfile(fdin, fdout);

0 comments on commit c68fa66

Please sign in to comment.
You can’t perform that action at this time.