android root: restore context for android system root

In this patchset we will store and reset the android system
root context after a wipe and restore to prevent issues
with no context labels in the file_contexts being applied.
This will prevent no boot issues in android with selinux
denials on the system root partition.

Change-Id: I87fd3a6060fbaa3e7bdfd7a4b1d09feeb4fa3f27
(cherry picked from commit 35d2bfda3c89ebd212a9bd2328bffd7464f95d47)
This commit is contained in:
bigbiff
2021-02-15 12:29:48 -05:00
parent e7c34e5715
commit 4a60bee82e
3 changed files with 15 additions and 0 deletions
+9
View File
@@ -1687,6 +1687,12 @@ bool TWPartition::Wipe(string New_File_System) {
if (Mount_Point == "/cache")
Log_Offset = 0;
if (Mount_Point == PartitionManager.Get_Android_Root_Path()) {
if (tw_get_default_metadata(PartitionManager.Get_Android_Root_Path().c_str()) != 0) {
gui_msg(Msg(msg::kWarning, "restore_system_context=Unable to get default context for {1} -- Android may not boot.")(PartitionManager.Get_Android_Root_Path()));
}
}
if (Has_Data_Media && Current_File_System == New_File_System) {
wiped = Wipe_Data_Without_Wiping_Media();
if (Mount_Point == "/data" && TWFunc::get_log_dir() == DATA_LOGS_DIR) {
@@ -1726,6 +1732,9 @@ bool TWPartition::Wipe(string New_File_System) {
if (Mount_Point == "/cache" && TWFunc::get_log_dir() != DATA_LOGS_DIR)
DataManager::Output_Version();
if (Mount_Point == PartitionManager.Get_Android_Root_Path()) {
tw_set_default_metadata(PartitionManager.Get_Android_Root_Path().c_str());
}
if (update_crypt) {
Setup_File_System(false);
if (Is_Encrypted && !Is_Decrypted) {