From 79ae093c82ec6f714719ccdc97b03e1c184bdc01 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 (cherry picked from commit 5c3950716e5c7c6279efd5f3f338d6d22e5215e2) --- twrpDigest.cpp | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) (limited to 'twrpDigest.cpp') diff --git a/twrpDigest.cpp b/twrpDigest.cpp index ab8f456f5..d1217cb6a 100644 --- a/twrpDigest.cpp +++ b/twrpDigest.cpp @@ -91,7 +91,7 @@ int twrpDigest::computeMD5(void) { initMD5(); file = fopen(md5fn.c_str(), "rb"); if (file == NULL) - return -1; + return MD5_NOT_FOUND; while ((len = fread(buf, 1, sizeof(buf), file)) > 0) { MD5Update(&md5c, buf, len); } @@ -128,24 +128,14 @@ int twrpDigest::read_md5digest(void) { i++; } - if (!foundMd5File) { - gui_msg("no_md5=Skipping MD5 check: no MD5 file found"); - return -1; - } else if (TWFunc::read_file(md5file, line) != 0) { - LOGERR("Skipping MD5 check: MD5 file unreadable %s\n", strerror(errno)); - return 1; - } + if (!foundMd5File) + return MD5_NOT_FOUND; + if (TWFunc::read_file(md5file, line) != 0) + return MD5_FILE_UNREADABLE; 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]; @@ -164,11 +154,8 @@ int twrpDigest::verify_md5digest(void) { snprintf(hex, 3, "%02x", md5sum[i]); md5str += hex; } - if (tokens.at(0) != md5str) { - gui_err("md5_fail=MD5 does not match"); - return -2; - } + if (tokens.at(0) != md5str) + return MD5_MATCH_FAIL; - gui_msg("md5_match=MD5 matched"); - return 0; + return MD5_OK; } -- cgit v1.2.3