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