1f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include <unistd.h> 2f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include <sys/types.h> 3f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include <fcntl.h> 4f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include <stdlib.h> 5f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include <errno.h> 6f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include <string.h> 7f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include "selinux_internal.h" 8f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include "policy.h" 9f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include <stdio.h> 10f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include <limits.h> 11f074036424618c130dacb3464465a8b40bffef5Stephen Smalley 12f074036424618c130dacb3464465a8b40bffef5Stephen Smalleyint security_disable(void) 13f074036424618c130dacb3464465a8b40bffef5Stephen Smalley{ 14f074036424618c130dacb3464465a8b40bffef5Stephen Smalley int fd, ret; 15f074036424618c130dacb3464465a8b40bffef5Stephen Smalley char path[PATH_MAX]; 16f074036424618c130dacb3464465a8b40bffef5Stephen Smalley char buf[20]; 17f074036424618c130dacb3464465a8b40bffef5Stephen Smalley 18f074036424618c130dacb3464465a8b40bffef5Stephen Smalley if (!selinux_mnt) { 19f074036424618c130dacb3464465a8b40bffef5Stephen Smalley errno = ENOENT; 20f074036424618c130dacb3464465a8b40bffef5Stephen Smalley return -1; 21f074036424618c130dacb3464465a8b40bffef5Stephen Smalley } 22f074036424618c130dacb3464465a8b40bffef5Stephen Smalley 23f074036424618c130dacb3464465a8b40bffef5Stephen Smalley snprintf(path, sizeof path, "%s/disable", selinux_mnt); 24f074036424618c130dacb3464465a8b40bffef5Stephen Smalley fd = open(path, O_WRONLY); 25f074036424618c130dacb3464465a8b40bffef5Stephen Smalley if (fd < 0) 26f074036424618c130dacb3464465a8b40bffef5Stephen Smalley return -1; 27f074036424618c130dacb3464465a8b40bffef5Stephen Smalley 28f074036424618c130dacb3464465a8b40bffef5Stephen Smalley buf[0] = '1'; 29f074036424618c130dacb3464465a8b40bffef5Stephen Smalley buf[1] = '\0'; 30f074036424618c130dacb3464465a8b40bffef5Stephen Smalley ret = write(fd, buf, strlen(buf)); 31f074036424618c130dacb3464465a8b40bffef5Stephen Smalley close(fd); 32f074036424618c130dacb3464465a8b40bffef5Stephen Smalley if (ret < 0) 33f074036424618c130dacb3464465a8b40bffef5Stephen Smalley return -1; 34f074036424618c130dacb3464465a8b40bffef5Stephen Smalley 35f074036424618c130dacb3464465a8b40bffef5Stephen Smalley return 0; 36f074036424618c130dacb3464465a8b40bffef5Stephen Smalley} 37f074036424618c130dacb3464465a8b40bffef5Stephen Smalley 38f074036424618c130dacb3464465a8b40bffef5Stephen Smalleyhidden_def(security_disable) 39