/* * Author: Trusted Computer Solutions, Inc. */ #include #include #include #include "selinux_internal.h" int setcon_raw(security_context_t context) { int fd; ssize_t ret; fd = open("/proc/self/attr/current", O_RDWR); if (fd < 0) return -1; if (context) ret = write(fd, context, strlen(context)+1); else ret = -1; /* we can not clear this one */ close(fd); if (ret < 0) return -1; else return 0; } hidden_def(setcon_raw) int setcon(char *context) { int ret; security_context_t rcontext = context; if (context_translations && trans_to_raw_context(context, &rcontext)) return -1; ret = setcon_raw(rcontext); if (context_translations) freecon(rcontext); return ret; }