diff options
Diffstat (limited to 'src/lgetfilecon.c')
-rw-r--r-- | src/lgetfilecon.c | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/src/lgetfilecon.c b/src/lgetfilecon.c deleted file mode 100644 index 22851a4..0000000 --- a/src/lgetfilecon.c +++ /dev/null @@ -1,50 +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 lgetfilecon(const char *path, 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 = lgetxattr(path, XATTR_NAME_SELINUX, buf, size - 1); - if (ret < 0 && errno == ERANGE) { - char *newbuf; - - size = lgetxattr(path, 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 = lgetxattr(path, 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; -} |