]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
smack: introduce new mac_smack_copy() function
authorSangjung Woo <sangjung.woo@samsung.com>
Tue, 8 Sep 2015 05:58:22 +0000 (14:58 +0900)
committerSangjung Woo <sangjung.woo@samsung.com>
Wed, 9 Sep 2015 11:26:46 +0000 (20:26 +0900)
This adds a new mac_smack_copy() function in order to read the smack
label from the source and apply it to the destination.

src/basic/smack-util.c
src/basic/smack-util.h

index 6d5c205117ba5b9845edceb77bcb984ff74fd4e0..9e221d6eab3879eb40c07e404a4932141fab6f02 100644 (file)
@@ -185,6 +185,23 @@ int mac_smack_fix(const char *path, bool ignore_enoent, bool ignore_erofs) {
         return r;
 }
 
+int mac_smack_copy(const char *dest, const char *src) {
+        int r = 0;
+        _cleanup_free_ char *label = NULL;
+
+        assert(dest);
+        assert(src);
+
+        r = mac_smack_read(src, SMACK_ATTR_ACCESS, &label);
+        if (r < 0)
+                return r;
+
+        r = mac_smack_apply(dest, SMACK_ATTR_ACCESS, label);
+        if (r < 0)
+                return r;
+
+        return r;
+}
 
 #else
 bool mac_smack_use(void) {
@@ -214,4 +231,8 @@ int mac_smack_apply_pid(pid_t pid, const char *label) {
 int mac_smack_fix(const char *path, bool ignore_enoent, bool ignore_erofs) {
         return 0;
 }
+
+int mac_smack_copy(const char *dest, const char *src) {
+        return 0;
+}
 #endif
index 1052cecf4c9295a518f01eda80d604c91652f9b9..b3aa55eb8a1fdc0dbef27c3ccb4c436479c2e2bf 100644 (file)
@@ -48,5 +48,5 @@ int mac_smack_read(const char *path, SmackAttr attr, char **label);
 int mac_smack_read_fd(int fd, SmackAttr attr, char **label);
 int mac_smack_apply(const char *path, SmackAttr attr, const char *label);
 int mac_smack_apply_fd(int fd, SmackAttr attr, const char *label);
-
 int mac_smack_apply_pid(pid_t pid, const char *label);
+int mac_smack_copy(const char *dest, const char *src);