summaryrefslogtreecommitdiff
path: root/src/fgetfilecon.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fgetfilecon.c')
-rw-r--r--src/fgetfilecon.c51
1 files changed, 0 insertions, 51 deletions
diff --git a/src/fgetfilecon.c b/src/fgetfilecon.c
deleted file mode 100644
index 33cdc27..0000000
--- a/src/fgetfilecon.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#include <unistd.h>
-#include <fcntl.h>
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/xattr.h>
-#include "selinux_internal.h"
-#include "policy.h"
-
-int fgetfilecon(int fd, char ** context)
-{
- char *buf;
- ssize_t size;
- ssize_t ret;
-
- size = INITCONTEXTLEN + 1;
- buf = malloc(size);
- if (!buf)
- return -1;
- memset(buf, 0, size);
-
- ret = fgetxattr(fd, XATTR_NAME_SELINUX, buf, size - 1);
- if (ret < 0 && errno == ERANGE) {
- char *newbuf;
-
- size = fgetxattr(fd, XATTR_NAME_SELINUX, NULL, 0);
- if (size < 0)
- goto out;
-
- size++;
- newbuf = realloc(buf, size);
- if (!newbuf)
- goto out;
-
- buf = newbuf;
- memset(buf, 0, size);
- ret = fgetxattr(fd, XATTR_NAME_SELINUX, buf, size - 1);
- }
- out:
- if (ret == 0) {
- /* Re-map empty attribute values to errors. */
- errno = EOPNOTSUPP;
- ret = -1;
- }
- if (ret < 0)
- free(buf);
- else
- *context = buf;
- return ret;
-}
-