From 1f50219439b49adc323d5d00ffc606861e6174fe Mon Sep 17 00:00:00 2001 From: Ciaran McCreesh Date: Sat, 5 Mar 2011 14:35:22 +0000 Subject: security.selinux xattr is special --- paludis/fs_merger.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/paludis/fs_merger.cc b/paludis/fs_merger.cc index e8bba1658..6aa3f5411 100644 --- a/paludis/fs_merger.cc +++ b/paludis/fs_merger.cc @@ -795,6 +795,13 @@ FSMerger::try_to_copy_xattrs(const FSPath & src, int dst_fd, FSMergerStatusFlags } std::shared_ptr value_holder(static_cast(::operator new(value_sz))); + + if (key == "security.selinux") + { + /* we handle selinux stuff specially */ + continue; + } + value_sz = fgetxattr(src_fd, key.c_str(), value_holder.get(), value_sz); if (-1 == value_sz) { @@ -808,8 +815,9 @@ FSMerger::try_to_copy_xattrs(const FSPath & src, int dst_fd, FSMergerStatusFlags if (ENOTSUP == errno) { Log::get_instance()->message("merger.xattrs.failure", ll_warning, lc_context) << - "Could not copy extended attributes from source file '" << src << "'"; - return; + "Could not copy extended attributes from source file '" << src << "', discarding attribute '" << + key << "' = '" << std::string(value_holder.get(), value_sz) << "'"; + continue; } else Log::get_instance()->message("merger.xattrs.failure", ll_warning, lc_context) << -- cgit v1.2.3