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:
Matt Mower
2014-04-16 21:46:53 +02:00
committed by Gerrit Code Review
parent fc966505e5
commit d5c1a9220d
2 changed files with 24 additions and 12 deletions
+3 -7
View File
@@ -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
View File
@@ -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;
}