Blame SOURCES/0172-tests-linkat-provide-fallback-values-for-secontext-f.patch

2682e8
From 97e2742a7f1e6e113354911d04505ada3bfb5d70 Mon Sep 17 00:00:00 2001
2682e8
From: Eugene Syromyatnikov <evgsyr@gmail.com>
2682e8
Date: Tue, 18 Jan 2022 18:04:42 +0100
2682e8
Subject: [PATCH 172/174] tests/linkat: provide fallback values for secontext
2682e8
 fields changes
2682e8
2682e8
* tests/linkat.c (mangle_secontext_field): New function.
2682e8
(main): Replace calls to update_secontext_field
2682e8
with mangle_secontext_field calls.
2682e8
---
2682e8
 tests/linkat.c | 23 ++++++++++++++++++++---
2682e8
 1 file changed, 20 insertions(+), 3 deletions(-)
2682e8
2682e8
diff --git a/tests/linkat.c b/tests/linkat.c
2682e8
index c3e2ee4..decb736 100644
2682e8
--- a/tests/linkat.c
2682e8
+++ b/tests/linkat.c
2682e8
@@ -21,6 +21,20 @@
2682e8
 #include "secontext.h"
2682e8
 #include "xmalloc.h"
2682e8
 
2682e8
+static void
2682e8
+mangle_secontext_field(const char *path, enum secontext_field field,
2682e8
+		       const char *new_val, const char *fallback_val)
2682e8
+{
2682e8
+	char *orig = get_secontext_field_file(path, field);
2682e8
+	if (!orig)
2682e8
+		return;
2682e8
+
2682e8
+	update_secontext_field(path, field,
2682e8
+			       strcmp(new_val, orig) ? new_val : fallback_val);
55edae
+
55edae
+	free(orig);
55edae
+}
55edae
+
55edae
 int
55edae
 main(void)
55edae
 {
55edae
@@ -93,7 +107,8 @@ main(void)
55edae
 
55edae
 #ifdef PRINT_SECONTEXT_MISMATCH
55edae
 	errno = 0;
55edae
-	update_secontext_field(sample_1, SECONTEXT_USER, "system_u");
55edae
+	mangle_secontext_field(sample_1, SECONTEXT_USER, "system_u",
55edae
+							 "unconfined_u");
55edae
 	sample_1_secontext = SECONTEXT_FILE(sample_1);
55edae
 
55edae
 # ifdef PRINT_SECONTEXT_FULL
55edae
@@ -115,7 +130,8 @@ main(void)
55edae
 #endif
55edae
 
55edae
 	errno = 0;
55edae
-	update_secontext_field(sample_1, SECONTEXT_TYPE, "default_t");
55edae
+	mangle_secontext_field(sample_1, SECONTEXT_TYPE, "default_t",
55edae
+							 "unconfined_t");
55edae
 	sample_1_secontext = SECONTEXT_FILE(sample_1);
55edae
 	sample_2_secontext = sample_1_secontext;
55edae
 
55edae
@@ -146,7 +162,8 @@ main(void)
55edae
 	char *cwd = get_fd_path(dfd_old);
55edae
 
55edae
 	errno = 0;
55edae
-	update_secontext_field(".", SECONTEXT_TYPE, "default_t");
55edae
+	mangle_secontext_field(".", SECONTEXT_TYPE, "default_t",
55edae
+						    "unconfined_t");
55edae
 	char *dfd_old_secontext = SECONTEXT_FILE(".");
55edae
 
55edae
 #ifdef PRINT_SECONTEXT_MISMATCH
55edae
diff --git a/tests-m32/linkat.c b/tests-m32/linkat.c
55edae
index c3e2ee4..decb736 100644
55edae
--- a/tests-m32/linkat.c
55edae
+++ b/tests-m32/linkat.c
55edae
@@ -21,6 +21,20 @@
55edae
 #include "secontext.h"
55edae
 #include "xmalloc.h"
55edae
 
55edae
+static void
55edae
+mangle_secontext_field(const char *path, enum secontext_field field,
55edae
+		       const char *new_val, const char *fallback_val)
55edae
+{
55edae
+	char *orig = get_secontext_field_file(path, field);
55edae
+	if (!orig)
55edae
+		return;
55edae
+
55edae
+	update_secontext_field(path, field,
55edae
+			       strcmp(new_val, orig) ? new_val : fallback_val);
55edae
+
55edae
+	free(orig);
55edae
+}
55edae
+
55edae
 int
55edae
 main(void)
55edae
 {
55edae
@@ -93,7 +107,8 @@ main(void)
55edae
 
55edae
 #ifdef PRINT_SECONTEXT_MISMATCH
55edae
 	errno = 0;
55edae
-	update_secontext_field(sample_1, SECONTEXT_USER, "system_u");
55edae
+	mangle_secontext_field(sample_1, SECONTEXT_USER, "system_u",
55edae
+							 "unconfined_u");
55edae
 	sample_1_secontext = SECONTEXT_FILE(sample_1);
55edae
 
55edae
 # ifdef PRINT_SECONTEXT_FULL
55edae
@@ -115,7 +130,8 @@ main(void)
55edae
 #endif
55edae
 
55edae
 	errno = 0;
55edae
-	update_secontext_field(sample_1, SECONTEXT_TYPE, "default_t");
55edae
+	mangle_secontext_field(sample_1, SECONTEXT_TYPE, "default_t",
55edae
+							 "unconfined_t");
55edae
 	sample_1_secontext = SECONTEXT_FILE(sample_1);
55edae
 	sample_2_secontext = sample_1_secontext;
55edae
 
55edae
@@ -146,7 +162,8 @@ main(void)
55edae
 	char *cwd = get_fd_path(dfd_old);
55edae
 
55edae
 	errno = 0;
55edae
-	update_secontext_field(".", SECONTEXT_TYPE, "default_t");
55edae
+	mangle_secontext_field(".", SECONTEXT_TYPE, "default_t",
55edae
+						    "unconfined_t");
55edae
 	char *dfd_old_secontext = SECONTEXT_FILE(".");
55edae
 
55edae
 #ifdef PRINT_SECONTEXT_MISMATCH
55edae
diff --git a/tests-mx32/linkat.c b/tests-mx32/linkat.c
55edae
index c3e2ee4..decb736 100644
55edae
--- a/tests-mx32/linkat.c
55edae
+++ b/tests-mx32/linkat.c
55edae
@@ -21,6 +21,20 @@
55edae
 #include "secontext.h"
55edae
 #include "xmalloc.h"
55edae
 
55edae
+static void
55edae
+mangle_secontext_field(const char *path, enum secontext_field field,
55edae
+		       const char *new_val, const char *fallback_val)
55edae
+{
55edae
+	char *orig = get_secontext_field_file(path, field);
55edae
+	if (!orig)
55edae
+		return;
55edae
+
55edae
+	update_secontext_field(path, field,
55edae
+			       strcmp(new_val, orig) ? new_val : fallback_val);
2682e8
+
2682e8
+	free(orig);
2682e8
+}
2682e8
+
2682e8
 int
2682e8
 main(void)
2682e8
 {
2682e8
@@ -93,7 +107,8 @@ main(void)
2682e8
 
2682e8
 #ifdef PRINT_SECONTEXT_MISMATCH
2682e8
 	errno = 0;
2682e8
-	update_secontext_field(sample_1, SECONTEXT_USER, "system_u");
2682e8
+	mangle_secontext_field(sample_1, SECONTEXT_USER, "system_u",
2682e8
+							 "unconfined_u");
2682e8
 	sample_1_secontext = SECONTEXT_FILE(sample_1);
2682e8
 
2682e8
 # ifdef PRINT_SECONTEXT_FULL
2682e8
@@ -115,7 +130,8 @@ main(void)
2682e8
 #endif
2682e8
 
2682e8
 	errno = 0;
2682e8
-	update_secontext_field(sample_1, SECONTEXT_TYPE, "default_t");
2682e8
+	mangle_secontext_field(sample_1, SECONTEXT_TYPE, "default_t",
2682e8
+							 "unconfined_t");
2682e8
 	sample_1_secontext = SECONTEXT_FILE(sample_1);
2682e8
 	sample_2_secontext = sample_1_secontext;
2682e8
 
2682e8
@@ -146,7 +162,8 @@ main(void)
2682e8
 	char *cwd = get_fd_path(dfd_old);
2682e8
 
2682e8
 	errno = 0;
2682e8
-	update_secontext_field(".", SECONTEXT_TYPE, "default_t");
2682e8
+	mangle_secontext_field(".", SECONTEXT_TYPE, "default_t",
2682e8
+						    "unconfined_t");
2682e8
 	char *dfd_old_secontext = SECONTEXT_FILE(".");
2682e8
 
2682e8
 #ifdef PRINT_SECONTEXT_MISMATCH
2682e8
-- 
2682e8
2.1.4
2682e8