From: David ‘Bombe’ Roden Date: Sat, 5 Jul 2008 18:43:08 +0000 (+0200) Subject: fix parsing of hash X-Git-Tag: 0.1~32 X-Git-Url: https://git.pterodactylus.net/?p=ecparse.git;a=commitdiff_plain;h=5055ee4c17b480e213b3afb38184530da566bb60 fix parsing of hash --- diff --git a/ED2KLink.cpp b/ED2KLink.cpp index 0e633a4..f6bcb50 100644 --- a/ED2KLink.cpp +++ b/ED2KLink.cpp @@ -53,7 +53,7 @@ ED2KLink* ED2KLink::parseED2KLink(const char* buffer) { char* sizeString; size_t size; int hashIndex; - char hash[16]; + unsigned char hash[16]; GrowingBuffer growingBuffer; GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] trying to parse “%s”...\n", __FILE__, __LINE__, buffer); @@ -84,8 +84,12 @@ ED2KLink* ED2KLink::parseED2KLink(const char* buffer) { size = atol(sizeString); GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] parsed size “%s” into %d.\n", __FILE__, __LINE__, sizeString, size); - for (hashIndex = 0; hashIndex < 16; hashIndex++, tempBuffer += 2) { - sscanf(tempBuffer, "%hhx", hash + hashIndex); + for (hashIndex = 0; hashIndex < 16; hashIndex++) { + char byteBuffer[3]; + byteBuffer[2] = '\0'; + memcpy(byteBuffer, tempBuffer + hashIndex * 2, 2); + sscanf(byteBuffer, "%hhX", &hash[hashIndex]); + GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] parsed ‘%c%c’ as %02x.\n", __FILE__, __LINE__, *(byteBuffer), *(byteBuffer + 1), hash[hashIndex]); } return new ED2KLink(filename, size, hash);