Blob Blame History Raw
From d70ddb3eb845c494280e7365e2b889242e7e1bb9 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 4 Oct 2021 08:45:53 +0200
Subject: [PATCH] coreutils-selinux.patch

---
 src/cp.c      | 19 ++++++++++++++++++-
 src/install.c | 12 +++++++++++-
 2 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/src/cp.c b/src/cp.c
index c97a675..89fb8ec 100644
--- a/src/cp.c
+++ b/src/cp.c
@@ -952,7 +952,7 @@ main (int argc, char **argv)
   selinux_enabled = (0 < is_selinux_enabled ());
   cp_option_init (&x);
 
-  while ((c = getopt_long (argc, argv, "abdfHilLnprst:uvxPRS:TZ",
+  while ((c = getopt_long (argc, argv, "abcdfHilLnprst:uvxPRS:TZ",
                            long_opts, NULL))
          != -1)
     {
@@ -1000,6 +1000,23 @@ main (int argc, char **argv)
           copy_contents = true;
           break;
 
+        case 'c':
+          fprintf (stderr, "%s: warning: option '-c' is deprecated,"
+                  " please use '--preserve=context' instead\n", argv[0]);
+          if (x.set_security_context)
+            {
+              fprintf (stderr,
+                      "%s: cannot force target context and preserve it\n",
+                      argv[0]);
+              exit (1);
+            }
+          else if (selinux_enabled)
+            {
+              x.preserve_security_context = true;
+              x.require_preserve_context = true;
+            }
+          break;
+
         case 'd':
           x.preserve_links = true;
           x.dereference = DEREF_NEVER;
diff --git a/src/install.c b/src/install.c
index c9456fe..2b1bee9 100644
--- a/src/install.c
+++ b/src/install.c
@@ -794,7 +794,7 @@ main (int argc, char **argv)
   dir_arg = false;
   umask (0);
 
-  while ((optc = getopt_long (argc, argv, "bcCsDdg:m:o:pt:TvS:Z", long_options,
+  while ((optc = getopt_long (argc, argv, "bcCsDdg:m:o:pPt:TvS:Z", long_options,
                               NULL)) != -1)
     {
       switch (optc)
@@ -855,6 +855,9 @@ main (int argc, char **argv)
           no_target_directory = true;
           break;
 
+        case 'P':
+          fprintf (stderr, "%s: warning: option '-P' is deprecated,"
+                  " please use '--preserve-context' instead\n", argv[0]);
         case PRESERVE_CONTEXT_OPTION:
           if (! selinux_enabled)
             {
@@ -862,6 +865,13 @@ main (int argc, char **argv)
                              "this kernel is not SELinux-enabled"));
               break;
             }
+          if (x.set_security_context)
+            {
+              fprintf (stderr,
+                      "%s: cannot force target context and preserve it\n",
+                      argv[0]);
+              exit (1);
+            }
           x.preserve_security_context = true;
           use_default_selinux_context = false;
           break;
-- 
2.31.1