Have cp preserve SELinux context when using -a.  Coreutils cp also does
this.

Signed-off-by: Chris PeBenito <[email protected]>
---
 coreutils/cp.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/coreutils/cp.c b/coreutils/cp.c
index 59e3d2f80..2381d53ec 100644
--- a/coreutils/cp.c
+++ b/coreutils/cp.c
@@ -41,8 +41,7 @@
 //usage:       "[OPTIONS] SOURCE... DEST"
 //usage:#define cp_full_usage "\n\n"
 //usage:       "Copy SOURCE(s) to DEST\n"
-//usage:     "\n       -a      Same as -dpR"
-//usage:       IF_SELINUX(
+//usage:     "\n       -a      Same as -dpR" IF_SELINUX("c"
 //usage:     "\n       -c      Preserve security context"
 //usage:       )
 //usage:     "\n       -R,-r   Recurse"
@@ -93,8 +92,8 @@ int cp_main(int argc, char **argv)
                // -P and -d are the same (-P is POSIX, -d is GNU)
                // -r and -R are the same
                // -R (and therefore -r) turns on -d (coreutils does this)
-               // -a = -pdR
-               "-2:l--s:s--l:Pd:rRd:Rd:apdR",
+               // -a = -pdR (-pdRc if SELINUX)
+               "-2:l--s:s--l:Pd:rRd:Rd:apdR" IF_SELINUX("c"),
                "archive\0"        No_argument "a"
                "force\0"          No_argument "f"
                "interactive\0"    No_argument "i"
@@ -128,7 +127,7 @@ int cp_main(int argc, char **argv)
        flags = getopt32(argv, "^"
                FILEUTILS_CP_OPTSTR
                "\0"
-               "-2:l--s:s--l:Pd:rRd:Rd:apdR"
+               "-2:l--s:s--l:Pd:rRd:Rd:apdR" IF_SELINUX("c")
        );
 #endif
        /* Options of cp from GNU coreutils 6.10:
-- 
2.20.1

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to