Blame SOURCES/0036-setfiles-Do-not-abort-on-labeling-error.patch

11ef81
From 53ccdd55adfbec60fb4277286f2ad94660838504 Mon Sep 17 00:00:00 2001
11ef81
From: Petr Lautrbach <plautrba@redhat.com>
11ef81
Date: Wed, 13 Jan 2021 22:09:47 +0100
11ef81
Subject: [PATCH] setfiles: Do not abort on labeling error
11ef81
11ef81
Commit 602347c7422e ("policycoreutils: setfiles - Modify to use
11ef81
selinux_restorecon") changed behavior of setfiles. Original
11ef81
implementation skipped files which it couldn't set context to while the
11ef81
new implementation aborts on them. setfiles should abort only if it
11ef81
can't validate a context from spec_file.
11ef81
11ef81
Reproducer:
11ef81
11ef81
    # mkdir -p r/1 r/2 r/3
11ef81
    # touch r/1/1 r/2/1
11ef81
    # chattr +i r/2/1
11ef81
    # touch r/3/1
11ef81
    # setfiles -r r -v /etc/selinux/targeted/contexts/files/file_contexts r
11ef81
    Relabeled r from unconfined_u:object_r:mnt_t:s0 to unconfined_u:object_r:root_t:s0
11ef81
    Relabeled r/2 from unconfined_u:object_r:mnt_t:s0 to unconfined_u:object_r:default_t:s0
11ef81
    setfiles: Could not set context for r/2/1:  Operation not permitted
11ef81
11ef81
r/3 and r/1 are not relabeled.
11ef81
11ef81
Signed-off-by: Petr Lautrbach <plautrba@redhat.com>
11ef81
---
11ef81
 policycoreutils/setfiles/setfiles.c | 4 +---
11ef81
 1 file changed, 1 insertion(+), 3 deletions(-)
11ef81
11ef81
diff --git a/policycoreutils/setfiles/setfiles.c b/policycoreutils/setfiles/setfiles.c
11ef81
index bc83c27b4c06..68eab45aa2b4 100644
11ef81
--- a/policycoreutils/setfiles/setfiles.c
11ef81
+++ b/policycoreutils/setfiles/setfiles.c
11ef81
@@ -182,6 +182,7 @@ int main(int argc, char **argv)
11ef81
 	policyfile = NULL;
11ef81
 	nerr = 0;
11ef81
 
11ef81
+	r_opts.abort_on_error = 0;
11ef81
 	r_opts.progname = strdup(argv[0]);
11ef81
 	if (!r_opts.progname) {
11ef81
 		fprintf(stderr, "%s:  Out of memory!\n", argv[0]);
11ef81
@@ -194,7 +195,6 @@ int main(int argc, char **argv)
11ef81
 		 * setfiles:
11ef81
 		 * Recursive descent,
11ef81
 		 * Does not expand paths via realpath,
11ef81
-		 * Aborts on errors during the file tree walk,
11ef81
 		 * Try to track inode associations for conflict detection,
11ef81
 		 * Does not follow mounts (sets SELINUX_RESTORECON_XDEV),
11ef81
 		 * Validates all file contexts at init time.
11ef81
@@ -202,7 +202,6 @@ int main(int argc, char **argv)
11ef81
 		iamrestorecon = 0;
11ef81
 		r_opts.recurse = SELINUX_RESTORECON_RECURSE;
11ef81
 		r_opts.userealpath = 0; /* SELINUX_RESTORECON_REALPATH */
11ef81
-		r_opts.abort_on_error = SELINUX_RESTORECON_ABORT_ON_ERROR;
11ef81
 		r_opts.add_assoc = SELINUX_RESTORECON_ADD_ASSOC;
11ef81
 		/* FTS_PHYSICAL and FTS_NOCHDIR are always set by selinux_restorecon(3) */
11ef81
 		r_opts.xdev = SELINUX_RESTORECON_XDEV;
11ef81
@@ -226,7 +225,6 @@ int main(int argc, char **argv)
11ef81
 		iamrestorecon = 1;
11ef81
 		r_opts.recurse = 0;
11ef81
 		r_opts.userealpath = SELINUX_RESTORECON_REALPATH;
11ef81
-		r_opts.abort_on_error = 0;
11ef81
 		r_opts.add_assoc = 0;
11ef81
 		r_opts.xdev = 0;
11ef81
 		r_opts.ignore_mounts = 0;
11ef81
-- 
11ef81
2.30.0
11ef81