fix parsing of hash
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 5 Jul 2008 18:43:08 +0000 (20:43 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 5 Jul 2008 18:43:08 +0000 (20:43 +0200)
ED2KLink.cpp

index 0e633a4..f6bcb50 100644 (file)
@@ -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);