From 5c3950716e5c7c6279efd5f3f338d6d22e5215e2 Mon Sep 17 00:00:00 2001 From: James Christopher Adduono Date: Tue, 25 Oct 2016 02:18:32 -0400 Subject: MD5 verification sanity We can use switches and enums to make things more understandable and work with results in a more sensible manner. PS2: Move file MD5 verification and error handling into a separate function to reduce code. PS3: Default to false in Check_Restore_File_MD5 function Change-Id: Id3ee0bb444cf13be67bb5dec2c43f7c26a86b954 --- twinstall.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'twinstall.cpp') diff --git a/twinstall.cpp b/twinstall.cpp index c2f98febc..50d286c45 100644 --- a/twinstall.cpp +++ b/twinstall.cpp @@ -296,9 +296,18 @@ extern "C" int TWinstall_zip(const char* path, int* wipe_cache) { gui_msg("check_for_md5=Checking for MD5 file..."); twrpDigest md5sum; md5sum.setfn(path); - int md5_return = md5sum.verify_md5digest(); - if (md5_return == -2) { // md5 did not match - LOGERR("Aborting zip install\n"); + switch (md5sum.verify_md5digest()) { + case MD5_OK: + gui_msg(Msg("md5_matched=MD5 matched for '{1}'.")(path)); + break; + case MD5_NOT_FOUND: + gui_msg("no_md5=Skipping MD5 check: no MD5 file found"); + break; + case MD5_FILE_UNREADABLE: + LOGERR("Skipping MD5 check: MD5 file unreadable\n"); + break; + case MD5_MATCH_FAIL: // md5 did not match + LOGERR("Aborting zip install: MD5 verification failed\n"); return INSTALL_CORRUPT; } } -- cgit v1.2.3