From 20e80ebb921d160274cf035c7c94a708e4f09514 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Thu, 3 Jul 2014 17:18:13 -0700 Subject: [PATCH] errbuff fixed, also moved alphanumeric account check to function in StringUtil --- common/StringUtil.cpp | 12 ++++++++++++ common/StringUtil.h | 2 ++ common/database.cpp | 10 +++------- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/common/StringUtil.cpp b/common/StringUtil.cpp index 71bb961e1..b89a1455d 100644 --- a/common/StringUtil.cpp +++ b/common/StringUtil.cpp @@ -384,3 +384,15 @@ std::string EscapeString(const std::string &s) { return ret; } + +bool isAlphaNumeric(const char *text) +{ + for (unsigned int charIndex=0; charIndex 'z') && + (text[charIndex] < 'A' || text[charIndex] > 'Z') && + (text[charIndex] < '0' || text[charIndex] > '9')) + return false; + } + + return true; +} \ No newline at end of file diff --git a/common/StringUtil.h b/common/StringUtil.h index 46ff43183..2e4182bf8 100644 --- a/common/StringUtil.h +++ b/common/StringUtil.h @@ -51,4 +51,6 @@ char *RemoveApostrophes(const char *s); std::vector SplitString(const std::string &s, char delim); +bool isAlphaNumeric(const char *text); + #endif diff --git a/common/database.cpp b/common/database.cpp index 53065269f..16c2bf89e 100644 --- a/common/database.cpp +++ b/common/database.cpp @@ -801,18 +801,14 @@ uint32 Database::GetAccountIDByChar(uint32 char_id) { uint32 Database::GetAccountIDByName(const char* accname, int16* status, uint32* lsid) { char *query = nullptr; - for (unsigned int i=0; i 'z') && - (accname[i] < 'A' || accname[i] > 'Z') && - (accname[i] < '0' || accname[i] > '9')) - return 0; - } + if (!isAlphaNumeric(accname)) + return 0; auto results = QueryDatabase(query, MakeAnyLenString(&query, "SELECT id, status, lsaccount_id FROM account WHERE name='%s'", accname)); if (!results.Success()) { - std::cerr << "Error in GetAccountIDByAcc query '" << query << "' " << errbuf << std::endl; + std::cerr << "Error in GetAccountIDByAcc query '" << query << "' " << results.ErrorMessage() << std::endl; safe_delete_array(query); return 0; }