mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-08-26 07:49:20 +00:00
Use standalone magiskpolicy
This commit is contained in:
@@ -110,7 +110,7 @@ ifdef B_POLICY
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := magiskpolicy
|
||||
LOCAL_STATIC_LIBRARIES := \
|
||||
libutilx \
|
||||
libutils \
|
||||
libsepol
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
@@ -122,7 +122,6 @@ LOCAL_SRC_FILES := \
|
||||
magiskpolicy/statement.cpp
|
||||
|
||||
LOCAL_CFLAGS := -DAPPLET_STUB_MAIN=magiskpolicy_main
|
||||
LOCAL_LDFLAGS := -static
|
||||
include $(BUILD_EXECUTABLE)
|
||||
|
||||
endif
|
||||
|
@@ -167,6 +167,11 @@ static bool magisk_env() {
|
||||
cp_afc(DATABIN "/busybox", buf);
|
||||
exec_command_async(buf, "--install", "-s", dirname(buf));
|
||||
|
||||
if (access(DATABIN "/magiskpolicy", X_OK) == 0) {
|
||||
sprintf(buf, "%s/magiskpolicy", MAGISKTMP.data());
|
||||
cp_afc(DATABIN "/magiskpolicy", buf);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -513,11 +513,9 @@ public:
|
||||
xsymlink("./magisk", dest.data());
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; init_applet[i]; ++i) {
|
||||
string dest = dir_name + "/" + init_applet[i];
|
||||
VLOGD("create", "./magiskinit", dest.data());
|
||||
xsymlink("./magiskinit", dest.data());
|
||||
}
|
||||
string dest = dir_name + "/supolicy";
|
||||
VLOGD("create", "./magiskpolicy", dest.data());
|
||||
xsymlink("./magiskpolicy", dest.data());
|
||||
}
|
||||
create_and_mount(MAGISKTMP + "/" + name());
|
||||
}
|
||||
@@ -532,13 +530,12 @@ static void inject_magisk_bins(root_node *system) {
|
||||
|
||||
// Insert binaries
|
||||
bin->insert(new magisk_node("magisk"));
|
||||
bin->insert(new magisk_node("magiskinit"));
|
||||
bin->insert(new magisk_node("magiskpolicy"));
|
||||
|
||||
// Also delete all applets to make sure no modules can override it
|
||||
for (int i = 0; applet_names[i]; ++i)
|
||||
delete bin->extract(applet_names[i]);
|
||||
for (int i = 0; init_applet[i]; ++i)
|
||||
delete bin->extract(init_applet[i]);
|
||||
delete bin->extract("supolicy");
|
||||
}
|
||||
|
||||
vector<module_info> *module_list;
|
||||
|
@@ -300,17 +300,11 @@ void MagiskInit::setup_tmp(const char *path) {
|
||||
int fd = xopen(INTLROOT "/config", O_WRONLY | O_CREAT, 0);
|
||||
xwrite(fd, magisk_cfg.buf, magisk_cfg.sz);
|
||||
close(fd);
|
||||
fd = xopen("magiskinit", O_WRONLY | O_CREAT, 0755);
|
||||
xwrite(fd, self.buf, self.sz);
|
||||
close(fd);
|
||||
|
||||
// The magisk binary will be handled later
|
||||
|
||||
// Create applet symlinks
|
||||
for (int i = 0; applet_names[i]; ++i)
|
||||
xsymlink("./magisk", applet_names[i]);
|
||||
xsymlink("./magiskinit", "magiskpolicy");
|
||||
xsymlink("./magiskinit", "supolicy");
|
||||
xsymlink("./magiskpolicy", "supolicy");
|
||||
|
||||
chdir("/");
|
||||
}
|
||||
|
Reference in New Issue
Block a user