From f1861c1dff2bef7307cf57e2d1faab1bbed27b5e Mon Sep 17 00:00:00 2001 From: sorgelig Date: Mon, 27 Jan 2020 01:22:48 +0800 Subject: [PATCH] arcade: update md5 reporting, prevent accidental md5 omission. --- support/arcade/romutils.cpp | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/support/arcade/romutils.cpp b/support/arcade/romutils.cpp index b48f8c4..c9d359b 100644 --- a/support/arcade/romutils.cpp +++ b/support/arcade/romutils.cpp @@ -506,28 +506,27 @@ static int xml_send_rom(XMLEvent evt, const XMLNode* node, SXML_CHAR* text, cons if (arc_info->insiderom) { unsigned char checksum[16]; - int checksumsame = 1; - char *md5 = arc_info->md5; MD5Final(checksum, &arc_info->context); - if (*md5) + + char hex[40]; + char *p = hex; + for (int i = 0; i < 16; i++) { - printf("md5[%s]\n", arc_info->md5); - printf("md5-calc["); - for (int i = 0; i < 16; i++) - { - char hex[10]; - snprintf(hex, 10, "%02x", (unsigned int)checksum[i]); - printf("%02x", (unsigned int)checksum[i]); - if (tolower(md5[0]) != tolower(hex[0]) || tolower(md5[1]) != tolower(hex[1])) { - checksumsame = 0; - } - md5 += 2; - } - printf("]\n"); + sprintf(p, "%02x", (unsigned int)checksum[i]); + p += 2; } + + int checksumsame = !strlen(arc_info->zipname) || !strcasecmp(arc_info->md5, hex); + if (checksumsame == 0) + { + printf("\n*** Checksum mismatch\n"); + printf(" md5-orig = %s\n", arc_info->md5); + printf(" md5-calc = %s\n\n", hex); + } + + checksumsame |= !strcasecmp(arc_info->md5, "none"); if (checksumsame == 0) { - printf("mismatch\n"); if (!strlen(arc_info->error_msg)) snprintf(arc_info->error_msg, kBigTextSize, "md5 mismatch for rom %d", arc_info->romindex); }