summaryrefslogtreecommitdiff
path: root/src/canonicalize_context.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/canonicalize_context.c')
-rw-r--r--src/canonicalize_context.c62
1 files changed, 0 insertions, 62 deletions
diff --git a/src/canonicalize_context.c b/src/canonicalize_context.c
deleted file mode 100644
index b8f874f..0000000
--- a/src/canonicalize_context.c
+++ /dev/null
@@ -1,62 +0,0 @@
-#include <unistd.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include "selinux_internal.h"
-#include "policy.h"
-#include <limits.h>
-
-int security_canonicalize_context(const char * con,
- char ** canoncon)
-{
- char path[PATH_MAX];
- char *buf;
- size_t size;
- int fd, ret;
-
- if (!selinux_mnt) {
- errno = ENOENT;
- return -1;
- }
-
- snprintf(path, sizeof path, "%s/context", selinux_mnt);
- fd = open(path, O_RDWR);
- if (fd < 0)
- return -1;
-
- size = selinux_page_size;
- buf = malloc(size);
- if (!buf) {
- ret = -1;
- goto out;
- }
- strncpy(buf, con, size);
-
- ret = write(fd, buf, strlen(buf) + 1);
- if (ret < 0)
- goto out2;
-
- memset(buf, 0, size);
- ret = read(fd, buf, size - 1);
- if (ret < 0 && errno == EINVAL) {
- /* Fall back to the original context for kernels
- that do not support the extended interface. */
- strncpy(buf, con, size);
- }
-
- *canoncon = strdup(buf);
- if (!(*canoncon)) {
- ret = -1;
- goto out2;
- }
- ret = 0;
- out2:
- free(buf);
- out:
- close(fd);
- return ret;
-}
-