From 9c25bcb645c754f4c09d9d6b8da41bbded862f6c Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Fri, 27 Mar 2015 20:50:28 -0500 Subject: Promote load_policy to android. --- toys/android/load_policy.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 toys/android/load_policy.c (limited to 'toys/android') diff --git a/toys/android/load_policy.c b/toys/android/load_policy.c new file mode 100644 index 00000000..aa59f36c --- /dev/null +++ b/toys/android/load_policy.c @@ -0,0 +1,37 @@ +/* load_policy.c - Load a policy file + * + * Copyright 2015 The Android Open Source Project + +USE_LOAD_POLICY(NEWTOY(load_policy, "<1>1", TOYFLAG_USR|TOYFLAG_SBIN)) + +config LOAD_POLICY + bool "load_policy" + depends on TOYBOX_SELINUX + default y + help + usage: load_policy FILE + + Load the specified policy file. +*/ + +#define FOR_load_policy +#include "toys.h" + +void load_policy_main(void) +{ + char *path = *toys.optargs; + char *policy_data = 0; + off_t policy_len; + int fd; + + if ((fd = open(path, O_RDONLY)) != -1) { + policy_len = fdlength(fd); + policy_data = mmap(0, policy_len, PROT_READ, MAP_PRIVATE, fd, 0); + close(fd); + } + + if (!policy_data || security_load_policy(policy_data, policy_len) < 0) + perror_exit("Couldn't %s %s: %s", policy_data ? "load" : "read", path); + + munmap(policy_data, policy_len); +} -- cgit v1.2.3