From a8d430942bab43e0f3df6348a8eb2216a3210c8f Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Wed, 1 Apr 2015 06:26:11 -0400 Subject: [PATCH] Fixed bad parsing in BanDatabase. --- Release/Plugins/RenX.Core.lib | Bin 110530 -> 110530 bytes RenX.Core/RenX_BanDatabase.cpp | 68 ++++++++++++++++++++------------- 2 files changed, 41 insertions(+), 27 deletions(-) diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index f7480df8e1c6d06efa5525b31ea29e98facbe546..6c3e9bd5d3ab7e01541b6424f885643074558013 100644 GIT binary patch delta 7414 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 diff --git a/RenX.Core/RenX_BanDatabase.cpp b/RenX.Core/RenX_BanDatabase.cpp index 6f8c6e8..87e29f3 100644 --- a/RenX.Core/RenX_BanDatabase.cpp +++ b/RenX.Core/RenX_BanDatabase.cpp @@ -41,7 +41,7 @@ bool RenX::BanDatabase::load(const Jupiter::ReadableString &fname) Jupiter::String key(32); Jupiter::String value(32); Entry *entry; - char c; + int c; while (!feof(file)) { entry = new Entry(); @@ -56,41 +56,55 @@ bool RenX::BanDatabase::load(const Jupiter::ReadableString &fname) delete entry; break; } + + // load name c = fgetc(file); - while (c != '\n' && c != EOF) + while (c != '\n' && c != '\0') { - if (c == '\0') + if (c == EOF) { - key.truncate(key.size()); - value.truncate(value.size()); - c = fgetc(file); - while (c != '\n' && c != EOF) - { - while (c != '\0') - { - key += c; - c = fgetc(file); - if (c == EOF) - { - fprintf(stderr, "ERROR: Unexpected EOF in %s at %lu", RenX::BanDatabase::filename.c_str(), ftell(file)); - break; - } - } - c = fgetc(file); - while (c != '\n' && c != EOF) - { - value += c; - c = fgetc(file); - } - entry->varData.set(key, value); - c = fgetc(file); - } + fprintf(stderr, "ERROR: Unexpected EOF in %s at %lu", RenX::BanDatabase::filename.c_str(), ftell(file)); break; } playerName += c; c = fgetc(file); } entry->name = playerName; + + // load variable data + while (c == '\0') + { + key.truncate(key.size()); + value.truncate(value.size()); + + // load key + c = fgetc(file); + while (c != '\0' && c != EOF) + { + key += c; + c = fgetc(file); + } + if (c == EOF) + { + fprintf(stderr, "ERROR: Unexpected EOF in %s at %lu", RenX::BanDatabase::filename.c_str(), ftell(file)); + break; + } + + // load value + c = fgetc(file); + while (c != '\n' && c != '\0' && c != EOF) + { + value += c; + c = fgetc(file); + } + if (c == EOF) + { + fprintf(stderr, "ERROR: Unexpected EOF in %s at %lu", RenX::BanDatabase::filename.c_str(), ftell(file)); + break; + } + + entry->varData.set(key, value); + } entries.add(entry); } fclose(file);