2019-07-01 04:09:31 +02:00
|
|
|
#pragma once
|
2017-11-28 23:09:35 +01:00
|
|
|
|
|
|
|
#include <stdlib.h>
|
2020-03-09 09:50:30 +01:00
|
|
|
#include <selinux.hpp>
|
2017-11-28 23:09:35 +01:00
|
|
|
|
2020-05-21 15:48:02 +02: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
|
2020-05-24 13:16:40 +02:00
|
|
|
bool to_file(c_str file);
|
2020-05-21 15:48:02 +02:00
|
|
|
void parse_statement(c_str stmt);
|
|
|
|
void load_rule_file(c_str file);
|
|
|
|
|
|
|
|
// Operation on types
|
2020-05-25 11:09:43 +02:00
|
|
|
bool type(c_str name, c_str attr);
|
|
|
|
bool attribute(c_str name);
|
2020-05-24 13:16:40 +02:00
|
|
|
bool permissive(c_str type);
|
|
|
|
bool enforce(c_str type);
|
|
|
|
bool typeattribute(c_str type, c_str attr);
|
|
|
|
bool exists(c_str type);
|
2020-05-21 15:48:02 +02:00
|
|
|
|
|
|
|
// Access vector rules
|
2020-05-24 13:16:40 +02:00
|
|
|
bool allow(c_str src, c_str tgt, c_str cls, c_str perm);
|
|
|
|
bool deny(c_str src, c_str tgt, c_str cls, c_str perm);
|
|
|
|
bool auditallow(c_str src, c_str tgt, c_str cls, c_str perm);
|
|
|
|
bool dontaudit(c_str src, c_str tgt, c_str cls, c_str perm);
|
2020-05-21 15:48:02 +02:00
|
|
|
|
|
|
|
// Extended permissions access vector rules
|
2020-05-24 13:16:40 +02:00
|
|
|
bool allowxperm(c_str src, c_str tgt, c_str cls, c_str range);
|
|
|
|
bool auditallowxperm(c_str src, c_str tgt, c_str cls, c_str range);
|
|
|
|
bool dontauditxperm(c_str src, c_str tgt, c_str cls, c_str range);
|
2020-05-21 15:48:02 +02:00
|
|
|
|
|
|
|
// Type rules
|
2020-05-24 13:16:40 +02:00
|
|
|
bool type_transition(c_str src, c_str tgt, c_str cls, c_str def, c_str obj = nullptr);
|
|
|
|
bool type_change(c_str src, c_str tgt, c_str cls, c_str def);
|
|
|
|
bool type_member(c_str src, c_str tgt, c_str cls, c_str def);
|
2020-05-21 15:48:02 +02:00
|
|
|
|
|
|
|
// File system labeling
|
2020-05-24 13:16:40 +02:00
|
|
|
bool genfscon(c_str fs_name, c_str path, c_str ctx);
|
2020-05-21 15:48:02 +02:00
|
|
|
|
|
|
|
// Magisk
|
|
|
|
void magisk_rules();
|
|
|
|
|
2020-05-25 11:09:43 +02:00
|
|
|
// Deprecate
|
|
|
|
bool create(c_str name) { return type(name, "domain"); }
|
|
|
|
|
2020-05-23 09:18:25 +02:00
|
|
|
protected:
|
2020-05-21 15:48:02 +02:00
|
|
|
policydb *db;
|
|
|
|
};
|