null-terminate correct string
[ecparse.git] / ED2KLink.cpp
index 5f33ce8..7f1ec66 100644 (file)
@@ -18,14 +18,14 @@ static int getDigits(size_t number) {
 }
 
 ED2KLink::ED2KLink(const char* filename, const size_t size, const void* hash) {
-       this->filename = (char*) malloc(strlen(filename));
+       this->filename = (char*) malloc(strlen(filename) + 1);
        this->hash = malloc(16);
 
        strcpy(this->filename, filename);
        memcpy(this->hash, hash, 16);
        this->size = size;
 
-       link = (char*) calloc(13 + (strlen(filename) + 1) + 1 + getDigits(size) + 1 + 32 + 2, 1);
+       link = (char*) calloc(13 + strlen(filename) + 1 + getDigits(size) + 1 + 32 + 2 + 1, 1);
        sprintf(link, "ed2k://|file|%s|%u|", filename, size);
        for (int i = 0; i < 16; i++) {
                sprintf(link + strlen(link), "%02X", ((unsigned char*) hash)[i] & 0xff);
@@ -71,7 +71,7 @@ ED2KLink* ED2KLink::parseED2KLink(const char* buffer) {
        stringLength = (char*) pipeIndex - tempBuffer;
        filename = (char*) malloc(stringLength + 1);
        memcpy(filename, tempBuffer, stringLength);
-       sizeString[stringLength] = '\0';
+       filename[stringLength] = '\0';
        tempBuffer = pipeIndex + 1;
 
        GlobalSettings::isVerbose() && fprintf(stderr, "[%s:%d] parsed filename: ā€œ%sā€.\n", __FILE__, __LINE__, filename);