From 6582a4abd91dba92259070a8cfe2832f850afd29 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Mon, 6 Sep 2021 00:46:30 +0800 Subject: [PATCH] Make magiskpolicy supports multiple --apply --- native/jni/magiskpolicy/magiskpolicy.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/native/jni/magiskpolicy/magiskpolicy.cpp b/native/jni/magiskpolicy/magiskpolicy.cpp index 4e999503d..8bba2c797 100644 --- a/native/jni/magiskpolicy/magiskpolicy.cpp +++ b/native/jni/magiskpolicy/magiskpolicy.cpp @@ -1,4 +1,5 @@ #include +#include #include #include "sepolicy.hpp" @@ -23,6 +24,7 @@ Options: Magisk selinux environment --apply FILE apply rules from FILE, read and parsed line by line as policy statements + (multiple --apply allows) If neither --load or --compile-split is specified, it will load from current live policies (/sys/fs/selinux/policy) @@ -34,7 +36,7 @@ from current live policies (/sys/fs/selinux/policy) int magiskpolicy_main(int argc, char *argv[]) { cmdline_logging(); const char *out_file = nullptr; - const char *rule_file = nullptr; + std::vector rule_files; sepolicy *sepol = nullptr; bool magisk = false; bool live = false; @@ -78,7 +80,7 @@ int magiskpolicy_main(int argc, char *argv[]) { } else if (option == "apply"sv) { if (argv[i + 1] == nullptr) usage(argv[0]); - rule_file = argv[i + 1]; + rule_files.emplace_back(argv[i + 1]); ++i; } else if (option == "help"sv) { statement_help(); @@ -99,8 +101,9 @@ int magiskpolicy_main(int argc, char *argv[]) { if (magisk) sepol->magisk_rules(); - if (rule_file) - sepol->load_rule_file(rule_file); + if (!rule_files.empty()) + for (const auto &rule_file : rule_files) + sepol->load_rule_file(rule_file.data()); for (; i < argc; ++i) sepol->parse_statement(argv[i]);