Skip decryption when installing mapped zips
Decrypting userdata is not needed when installing zips if we have a map of blocks to read, so skip the decryption. This allows to install zips with no user interaction and, more importantly, it allows to install zips on devices where TWRP can't properly decrypt userdata. Remove also the unneeded Mount_All_Storage() call, Install_Command() already mounts the needed partition. Change-Id: I91c69f84ecc2fe41c9567c40649e501af1cfb64a
This commit is contained in:
@@ -141,7 +141,6 @@ int OpenRecoveryScript::run_script_file(void) {
|
||||
if (strcmp(command, "install") == 0) {
|
||||
// Install Zip
|
||||
DataManager::SetValue("tw_action_text2", "Installing Zip");
|
||||
PartitionManager.Mount_All_Storage();
|
||||
ret_val = Install_Command(value);
|
||||
install_cmd = -1;
|
||||
} else if (strcmp(command, "wipe") == 0) {
|
||||
|
||||
@@ -169,6 +169,7 @@ int main(int argc, char **argv) {
|
||||
PartitionManager.Mount_By_Path("/cache", false);
|
||||
|
||||
bool Shutdown = false;
|
||||
bool SkipDecryption = false;
|
||||
string Send_Intent = "";
|
||||
{
|
||||
TWPartition* misc = PartitionManager.Find_Partition_By_Path("/misc");
|
||||
@@ -203,6 +204,9 @@ int main(int argc, char **argv) {
|
||||
string ORSCommand = "install ";
|
||||
ORSCommand.append(ptr);
|
||||
|
||||
// If we have a map of blocks we don't need to mount data.
|
||||
SkipDecryption = *ptr == '@';
|
||||
|
||||
if (!OpenRecoveryScript::Insert_ORS_Command(ORSCommand))
|
||||
break;
|
||||
} else
|
||||
@@ -271,12 +275,16 @@ int main(int argc, char **argv) {
|
||||
TWFunc::Update_Log_File();
|
||||
// Offer to decrypt if the device is encrypted
|
||||
if (DataManager::GetIntValue(TW_IS_ENCRYPTED) != 0) {
|
||||
LOGINFO("Is encrypted, do decrypt page first\n");
|
||||
if (gui_startPage("decrypt", 1, 1) != 0) {
|
||||
LOGERR("Failed to start decrypt GUI page.\n");
|
||||
if (SkipDecryption) {
|
||||
LOGINFO("Skipping decryption\n");
|
||||
} else {
|
||||
// Check for and load custom theme if present
|
||||
gui_loadCustomResources();
|
||||
LOGINFO("Is encrypted, do decrypt page first\n");
|
||||
if (gui_startPage("decrypt", 1, 1) != 0) {
|
||||
LOGERR("Failed to start decrypt GUI page.\n");
|
||||
} else {
|
||||
// Check for and load custom theme if present
|
||||
gui_loadCustomResources();
|
||||
}
|
||||
}
|
||||
} else if (datamedia) {
|
||||
if (tw_get_default_metadata(DataManager::GetSettingsStoragePath().c_str()) != 0) {
|
||||
|
||||
Reference in New Issue
Block a user