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:
Gabriele M
2018-01-02 17:47:30 +01:00
committed by Dees Troy
parent 34ad728823
commit 72638b6437
2 changed files with 13 additions and 6 deletions
-1
View File
@@ -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) {
+13 -5
View File
@@ -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) {