From 5055ee4c17b480e213b3afb38184530da566bb60 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Sat, 5 Jul 2008 20:43:08 +0200 Subject: [PATCH] fix parsing of hash --- ED2KLink.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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); -- 2.7.4