** Bug fixes
+ cp now diagnoses failure to preserve selinux/xattr attributes when
+ --preserve=context,xattr is specified in combination with -a.
+ Also, cp no longer suppresses attribute-preservation diagnostics
+ when preserving SELinux context was explicitly requested.
+
sort -m no longer segfaults when its output file is also an input file.
E.g., with this, touch 1; sort -m -o 1 1, sort would segfault.
[introduced in coreutils-7.2]
.quote_free = copy_attr_free
};
return 0 == attr_copy_fd (src_path, src_fd, dst_path, dst_fd, 0,
- x->reduce_diagnostics ? NULL : &ctx);
+ (x->reduce_diagnostics
+ && !x->require_preserve_xattr)? NULL : &ctx);
}
static bool
.quote_free = copy_attr_free
};
return 0 == attr_copy_file (src_path, dst_path, 0,
- x-> reduce_diagnostics ? NULL :&ctx);
+ (x-> reduce_diagnostics
+ && !x->require_preserve_xattr) ? NULL : &ctx);
}
#else /* USE_XATTR */
security_context_t con = NULL;
if (getfscreatecon (&con) < 0)
{
- if (!x->reduce_diagnostics)
+ if (!x->reduce_diagnostics || x->require_preserve_context)
error (0, errno, _("failed to get file system create context"));
if (x->require_preserve_context)
{
{
if (fsetfilecon (dest_desc, con) < 0)
{
- if (!x->reduce_diagnostics)
+ if (!x->reduce_diagnostics || x->require_preserve_context)
error (0, errno,
_("failed to set the security context of %s to %s"),
quote_n (0, dst_name), quote_n (1, con));
{
if (setfscreatecon (con) < 0)
{
- if (!x->reduce_diagnostics)
+ if (!x->reduce_diagnostics || x->require_preserve_context)
error (0, errno,
_("failed to set default file creation context to %s"),
quote (con));
}
else
{
- if (errno != ENOTSUP && errno != ENODATA)
+ if ((errno != ENOTSUP && errno != ENODATA) || x->require_preserve_context)
{
- if (!x->reduce_diagnostics)
+ if (!x->reduce_diagnostics || x->require_preserve_context)
error (0, errno,
_("failed to get security context of %s"),
quote (src_name));