diff options
Diffstat (limited to 'src/getpeercon.c')
-rw-r--r-- | src/getpeercon.c | 45 |
1 files changed, 0 insertions, 45 deletions
diff --git a/src/getpeercon.c b/src/getpeercon.c deleted file mode 100644 index 3bd29dc..0000000 --- a/src/getpeercon.c +++ /dev/null @@ -1,45 +0,0 @@ -#include <unistd.h> -#include <fcntl.h> -#include <string.h> -#include <stdlib.h> -#include <errno.h> -#include <sys/socket.h> -#include "selinux_internal.h" -#include "policy.h" - -#ifndef SO_PEERSEC -#define SO_PEERSEC 31 -#endif - -int getpeercon(int fd, char ** context) -{ - char *buf; - socklen_t size; - ssize_t ret; - - size = INITCONTEXTLEN + 1; - buf = malloc(size); - if (!buf) - return -1; - memset(buf, 0, size); - - ret = getsockopt(fd, SOL_SOCKET, SO_PEERSEC, buf, &size); - if (ret < 0 && errno == ERANGE) { - char *newbuf; - - newbuf = realloc(buf, size); - if (!newbuf) - goto out; - - buf = newbuf; - memset(buf, 0, size); - ret = getsockopt(fd, SOL_SOCKET, SO_PEERSEC, buf, &size); - } - out: - if (ret < 0) - free(buf); - else - *context = buf; - return ret; -} - |