More MD5 verification error handling
Distinguish between skipped md5 verification cases: - .md5/.md5sum file not found - .md5/.md5sum file unreadable Move MD5 error messages to twrpDigest Change-Id: I912e3d9ebe64e78bed76eab8aa468d619b45972f
This commit is contained in:
committed by
Gerrit Code Review
parent
fc966505e5
commit
d5c1a9220d
+3
-7
@@ -260,14 +260,10 @@ extern "C" int TWinstall_zip(const char* path, int* wipe_cache) {
|
||||
gui_print("Installing '%s'...\nChecking for MD5 file...\n", path);
|
||||
md5sum.setfn(strpath);
|
||||
md5_return = md5sum.verify_md5digest();
|
||||
if (md5_return == -2) {
|
||||
// MD5 did not match.
|
||||
LOGERR("Zip MD5 does not match.\nUnable to install zip.\n");
|
||||
if (md5_return == -2) { // md5 did not match
|
||||
LOGERR("Aborting zip install\n");
|
||||
return INSTALL_CORRUPT;
|
||||
} else if (md5_return == -1) {
|
||||
gui_print("Skipping MD5 check: no MD5 file found.\n");
|
||||
} else if (md5_return == 0)
|
||||
gui_print("Zip MD5 matched.\n"); // MD5 found and matched.
|
||||
}
|
||||
|
||||
#ifndef TW_OEM_BUILD
|
||||
DataManager::GetValue(TW_SIGNED_ZIP_VERIFY_VAR, zip_verify);
|
||||
|
||||
+21
-5
@@ -19,6 +19,7 @@
|
||||
extern "C"
|
||||
{
|
||||
#include "digest/md5.h"
|
||||
#include "gui/gui.h"
|
||||
#include "libcrecovery/common.h"
|
||||
}
|
||||
|
||||
@@ -100,21 +101,32 @@ int twrpDigest::read_md5digest(void) {
|
||||
}
|
||||
|
||||
if (!foundMd5File) {
|
||||
gui_print("Skipping MD5 check: no MD5 file found\n");
|
||||
return -1;
|
||||
} else if (TWFunc::read_file(md5file, line) != 0) {
|
||||
LOGERR("Could not read %s\n", md5file.c_str());
|
||||
gui_print("Skipping MD5 check: MD5 file unreadable\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* verify_md5digest return codes:
|
||||
-2: md5 did not match
|
||||
-1: no md5 file found
|
||||
0: md5 matches
|
||||
1: md5 file unreadable
|
||||
*/
|
||||
|
||||
int twrpDigest::verify_md5digest(void) {
|
||||
string buf;
|
||||
char hex[3];
|
||||
int i;
|
||||
int i, ret;
|
||||
string md5string;
|
||||
if (read_md5digest() != 0)
|
||||
return -1;
|
||||
|
||||
ret = read_md5digest();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
stringstream ss(line);
|
||||
vector<string> tokens;
|
||||
while (ss >> buf)
|
||||
@@ -124,7 +136,11 @@ int twrpDigest::verify_md5digest(void) {
|
||||
snprintf(hex, 3, "%02x", md5sum[i]);
|
||||
md5string += hex;
|
||||
}
|
||||
if (tokens.at(0) != md5string)
|
||||
if (tokens.at(0) != md5string) {
|
||||
LOGERR("MD5 does not match\n");
|
||||
return -2;
|
||||
}
|
||||
|
||||
gui_print("MD5 matched\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user