Previously, Magisk uses persist or cache for storing modules' custom sepolicy rules. In this commit, we significantly broaden its compatibility and also prevent mounting errors. The persist partition is non-standard and also critical for Snapdragon devices, so we prefer not to use it by default. We will go through the following logic to find the best suitable non-volatile, writable location to store and load sepolicy.rule files: Unencrypted data -> FBE data unencrypted dir -> cache -> metadata -> persist This should cover almost all possible cases: very old devices have cache partitions; newer devices will use FBE; latest devices will use metadata FBE (which guarantees a metadata parition); and finally, all Snapdragon devices have the persist partition (as a last resort). Fix #3179
36 lines
1.2 KiB
C++
36 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
|
|
#define MAIN_SOCKET "d30138f2310a9fb9c54a3e0c21f58591"
|
|
#define JAVA_PACKAGE_NAME "com.topjohnwu.magisk"
|
|
#define LOGFILE "/cache/magisk.log"
|
|
#define UNBLOCKFILE "/dev/.magisk_unblock"
|
|
#define SECURE_DIR "/data/adb"
|
|
#define MODULEROOT SECURE_DIR "/modules"
|
|
#define MODULEUPGRADE SECURE_DIR "/modules_update"
|
|
#define DATABIN SECURE_DIR "/magisk"
|
|
#define MAGISKDB SECURE_DIR "/magisk.db"
|
|
#define MANAGERAPK DATABIN "/magisk.apk"
|
|
|
|
// tmpfs paths
|
|
extern std::string MAGISKTMP;
|
|
#define INTLROOT ".magisk"
|
|
#define MIRRDIR INTLROOT "/mirror"
|
|
#define RULESDIR MIRRDIR "/sepolicy.rules"
|
|
#define BLOCKDIR INTLROOT "/block"
|
|
#define MODULEMNT INTLROOT "/modules"
|
|
#define BBPATH INTLROOT "/busybox"
|
|
#define ROOTOVL INTLROOT "/rootdir"
|
|
#define ROOTMNT ROOTOVL "/.mount_list"
|
|
|
|
constexpr const char *applet_names[] = { "su", "resetprop", "magiskhide", nullptr };
|
|
constexpr const char *init_applet[] = { "magiskpolicy", "supolicy", nullptr };
|
|
|
|
// Multi-call entrypoints
|
|
int magisk_main(int argc, char *argv[]);
|
|
int magiskhide_main(int argc, char *argv[]);
|
|
int magiskpolicy_main(int argc, char *argv[]);
|
|
int su_client_main(int argc, char *argv[]);
|
|
int resetprop_main(int argc, char *argv[]);
|