summaryrefslogtreecommitdiff
path: root/coreutils
diff options
context:
space:
mode:
Diffstat (limited to 'coreutils')
-rw-r--r--coreutils/mv.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/coreutils/mv.c b/coreutils/mv.c
index 5d02196..613d4ac 100644
--- a/coreutils/mv.c
+++ b/coreutils/mv.c
@@ -71,7 +71,8 @@ int mv_main(int argc, char **argv)
}
DO_MOVE:
- if (dest_exists && !(flags & OPT_FILEUTILS_FORCE)
+ if (dest_exists
+ && !(flags & OPT_FILEUTILS_FORCE)
&& ((access(dest, W_OK) < 0 && isatty(0))
|| (flags & OPT_FILEUTILS_INTERACTIVE))
) {
@@ -108,6 +109,9 @@ int mv_main(int argc, char **argv)
goto RET_1;
}
}
+ /* FILEUTILS_RECUR also prevents nasties like
+ * "read from device and write contents to dst"
+ * instead of "create same device node" */
copy_flag = FILEUTILS_RECUR | FILEUTILS_PRESERVE_STATUS;
#if ENABLE_SELINUX
copy_flag |= FILEUTILS_PRESERVE_SECURITY_CONTEXT;