]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
selinux: remove security_context_t usage as it's deprecated 3498/head
authorChristian Brauner <christian.brauner@ubuntu.com>
Sat, 25 Jul 2020 09:36:46 +0000 (11:36 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Sat, 25 Jul 2020 09:36:46 +0000 (11:36 +0200)
Link: https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1888705
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/lsm/selinux.c

index dba0ab584458e5451b047e3b64c728ebb9befb8f..e28731e8fdbe60dd4c3d45b16eff6308e5487ed9 100644 (file)
@@ -32,15 +32,11 @@ lxc_log_define(selinux, lsm);
  */
 static char *selinux_process_label_get(pid_t pid)
 {
-       security_context_t ctx;
        char *label;
 
-       if (getpidcon_raw(pid, &ctx) < 0) {
-               SYSERROR("failed to get SELinux context for pid %d", pid);
-               return NULL;
-       }
-       label = strdup((char *)ctx);
-       freecon(ctx);
+       if (getpidcon_raw(pid, &label) < 0)
+               return log_error_errno(NULL, errno, "failed to get SELinux context for pid %d", pid);
+
        return label;
 }
 
@@ -63,10 +59,8 @@ static int selinux_process_label_set(const char *inlabel, struct lxc_conf *conf,
        const char *label;
 
        label = inlabel ? inlabel : conf->lsm_se_context;
-       if (!label) {
-
+       if (!label)
                label = DEFAULT_LABEL;
-       }
 
        if (strcmp(label, "unconfined_t") == 0)
                return 0;
@@ -75,11 +69,9 @@ static int selinux_process_label_set(const char *inlabel, struct lxc_conf *conf,
                ret = setexeccon_raw((char *)label);
        else
                ret = setcon_raw((char *)label);
-       if (ret < 0) {
-               SYSERROR("Failed to set SELinux%s context to \"%s\"",
-                        on_exec ? " exec" : "", label);
-               return -1;
-       }
+       if (ret < 0)
+               return log_error_errno(-1, errno, "Failed to set SELinux%s context to \"%s\"",
+                                      on_exec ? " exec" : "", label);
 
        INFO("Changed SELinux%s context to \"%s\"", on_exec ? " exec" : "", label);
        return 0;
@@ -98,16 +90,17 @@ static int selinux_keyring_label_set(char *label)
 };
 
 static struct lsm_drv selinux_drv = {
-       .name = "SELinux",
-       .enabled           = is_selinux_enabled,
-       .process_label_get = selinux_process_label_get,
-       .process_label_set = selinux_process_label_set,
-       .keyring_label_set = selinux_keyring_label_set,
+       .name                   = "SELinux",
+       .enabled                = is_selinux_enabled,
+       .process_label_get      = selinux_process_label_get,
+       .process_label_set      = selinux_process_label_set,
+       .keyring_label_set      = selinux_keyring_label_set,
 };
 
 struct lsm_drv *lsm_selinux_drv_init(void)
 {
        if (!is_selinux_enabled())
                return NULL;
+
        return &selinux_drv;
 }