diff options
author | Pádraig Brady <P@draigBrady.com> | 2016-08-18 13:54:48 +0100 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2016-08-18 13:54:48 +0100 |
commit | bd75118c16d8bca235b61dbb99326c043278a791 (patch) | |
tree | 42926fb4f780e2d6816928741317ec349a4f1764 /src | |
parent | 3e71b0657760825d4c3a356df67a59fc6bc57ec6 (diff) | |
download | coreutils-bd75118c16d8bca235b61dbb99326c043278a791.tar.xz |
cp: with --parents --no-preserve=mode don't copy dir perms
* src/cp.c (make_dir_parents_private): Use default permissions for
created directories when --no-preserve=mode is specified.
* tests/cp/cp-parents.sh: Add a test case.
* NEWS: Mention the fix.
Fixes http://bugs.gnu.org/24251
Diffstat (limited to 'src')
-rw-r--r-- | src/cp.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -476,7 +476,8 @@ make_dir_parents_private (char const *const_dir, size_t src_offset, (src_mode & ~S_IRWXUGO) != 0. However, common practice is to ask mkdir to copy all the CHMOD_MODE_BITS, letting mkdir decide what to do with S_ISUID | S_ISGID | S_ISVTX. */ - mkdir_mode = src_mode & CHMOD_MODE_BITS & ~omitted_permissions; + mkdir_mode = x->explicit_no_preserve_mode ? S_IRWXUGO : src_mode; + mkdir_mode &= CHMOD_MODE_BITS & ~omitted_permissions; if (mkdir (dir, mkdir_mode) != 0) { error (0, errno, _("cannot make directory %s"), |