Added smack_set_self_label().
authorJarkko Sakkinen <jarkko.sakkinen@iki.fi>
Sat, 10 Dec 2011 21:33:28 +0000 (23:33 +0200)
committerJarkko Sakkinen <jarkko.sakkinen@iki.fi>
Sat, 10 Dec 2011 21:33:28 +0000 (23:33 +0200)
libsmack/libsmack.c
libsmack/sys/smack.h

index 1b96524..60ace08 100644 (file)
@@ -295,6 +295,23 @@ int smack_new_label_from_socket(int fd, char **label)
        return 0;
 }
 
+int smack_set_self_label(char *label)
+{
+       int fd;
+
+       fd = open(SELF_LABEL_FILE, O_WRONLY);
+       if (fd < 0)
+               return -1;
+
+       if (write(fd, label, strlen(label)) < 0) {
+               close(fd);
+               return -1;
+       }
+
+       close(fd);
+       return 0;
+}
+
 static int accesses_apply(struct smack_accesses *handle, int clear)
 {
        char buf[LOAD_LEN + 1];
index d9e1ebf..707edb1 100644 (file)
@@ -130,6 +130,13 @@ int smack_new_label_from_self(char **label);
   */
 int smack_new_label_from_socket(int fd, char **label);
 
+/*!
+ * Set Smack label for callers process. Requires CAP_MAC_ADMIN.
+ *
+ * @param label new label for callers process
+ */
+int smack_set_self_label(char *label);
+
 #ifdef __cplusplus
 }
 #endif