Magisk/native/jni/include/magiskpolicy.hpp

57 lines
1.4 KiB
C++
Raw Normal View History

2019-07-01 02:09:31 +00:00
#pragma once
#include <stdlib.h>
2020-03-09 08:50:30 +00:00
#include <selinux.hpp>
2020-05-21 13:48:02 +00:00
#define ALL nullptr
struct policydb;
class sepolicy {
public:
typedef const char * c_str;
~sepolicy();
// Public static factory functions
static sepolicy *from_file(c_str file);
static sepolicy *from_split();
static sepolicy *compile_split();
// External APIs
int to_file(c_str file);
void parse_statement(c_str stmt);
void load_rule_file(c_str file);
// Operation on types
int create(c_str type);
int permissive(c_str type);
int enforce(c_str type);
int typeattribute(c_str type, c_str attr);
int exists(c_str type);
// Access vector rules
int allow(c_str src, c_str tgt, c_str cls, c_str perm);
int deny(c_str src, c_str tgt, c_str cls, c_str perm);
int auditallow(c_str src, c_str tgt, c_str cls, c_str perm);
int dontaudit(c_str src, c_str tgt, c_str cls, c_str perm);
// Extended permissions access vector rules
int allowxperm(c_str src, c_str tgt, c_str cls, c_str range);
int auditallowxperm(c_str src, c_str tgt, c_str cls, c_str range);
int dontauditxperm(c_str src, c_str tgt, c_str cls, c_str range);
// Type rules
2020-05-23 07:18:25 +00:00
int type_transition(c_str s, c_str t, c_str c, c_str d, c_str o = nullptr);
2020-05-21 13:48:02 +00:00
int type_change(c_str src, c_str tgt, c_str cls, c_str def);
int type_member(c_str src, c_str tgt, c_str cls, c_str def);
// File system labeling
int genfscon(c_str fs_name, c_str path, c_str ctx);
// Magisk
void magisk_rules();
2020-05-23 07:18:25 +00:00
protected:
2020-05-21 13:48:02 +00:00
policydb *db;
};