1#include <unistd.h> 2#include <sys/types.h> 3#include <sys/stat.h> 4#include <sys/mman.h> 5#include <sys/mount.h> 6#include <sys/utsname.h> 7#include <fcntl.h> 8#include <stdlib.h> 9#include <stdio.h> 10#include <ctype.h> 11#include <string.h> 12#include <errno.h> 13#include "selinux_internal.h" 14#include <dlfcn.h> 15#include "policy.h" 16#include <limits.h> 17#include "callbacks.h" 18 19int security_load_policy(void *data, size_t len) 20{ 21 char path[PATH_MAX]; 22 int fd, ret; 23 24 if (!selinux_mnt) { 25 errno = ENOENT; 26 return -1; 27 } 28 29 snprintf(path, sizeof path, "%s/load", selinux_mnt); 30 fd = open(path, O_RDWR); 31 if (fd < 0) 32 return -1; 33 34 ret = write(fd, data, len); 35 close(fd); 36 if (ret < 0) 37 return -1; 38 return 0; 39} 40 41hidden_def(security_load_policy) 42