diff --git a/CMakeLists.txt b/CMakeLists.txt index 767231e7..ec2703b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,7 +73,7 @@ message( message("") # Search for and set up the needed packages -set(OPENSSL_EXPECTED_VERSION 1.0.0) +set(OPENSSL_EXPECTED_VERSION 1.1.0) find_package(Platform REQUIRED) find_package(Git) diff --git a/cmake/FindOpenSSL.cmake b/cmake/FindOpenSSL.cmake index 3467a2db..875edc77 100644 --- a/cmake/FindOpenSSL.cmake +++ b/cmake/FindOpenSSL.cmake @@ -25,20 +25,19 @@ # http://www.slproweb.com/products/Win32OpenSSL.html -SET(_OPENSSL_ROOT_HINTS - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]" - ) - IF(PLATFORM EQUAL 64) SET(_OPENSSL_ROOT_PATHS - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;InstallLocation]" + "C:/OpenSSL-Win64-v11/" "C:/OpenSSL-Win64/" "C:/OpenSSL/" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;InstallLocation]" "/usr/local/opt/openssl/" ) ELSE() SET(_OPENSSL_ROOT_PATHS + "C:/OpenSSL-Win32-v11/" + "C:/OpenSSL-Win32/" + "C:/OpenSSL/" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]" "C:/OpenSSL/" @@ -49,8 +48,6 @@ ENDIF() FIND_PATH(OPENSSL_ROOT_DIR NAMES include/openssl/ssl.h - HINTS - ${_OPENSSL_ROOT_HINTS} PATHS ${_OPENSSL_ROOT_PATHS} ) @@ -81,28 +78,28 @@ IF(WIN32 AND NOT CYGWIN) FIND_LIBRARY(LIB_EAY_DEBUG NAMES - libeay32MDd libeay32 + libeay32MDd libeay32 libcrypto32MDd libcrypto32 PATHS ${OPENSSL_ROOT_DIR}/lib/VC ) FIND_LIBRARY(LIB_EAY_RELEASE NAMES - libeay32MD libeay32 + libeay32MD libeay32 libcrypto32MD libcrypto32 PATHS ${OPENSSL_ROOT_DIR}/lib/VC ) FIND_LIBRARY(SSL_EAY_DEBUG NAMES - ssleay32MDd ssleay32 ssl + ssleay32MDd ssleay32 ssl libssl32MDd libssl32 libssl PATHS ${OPENSSL_ROOT_DIR}/lib/VC ) FIND_LIBRARY(SSL_EAY_RELEASE NAMES - ssleay32MD ssleay32 ssl + ssleay32MD ssleay32 ssl libssl32MD libssl32 libssl PATHS ${OPENSSL_ROOT_DIR}/lib/VC ) @@ -125,14 +122,14 @@ IF(WIN32 AND NOT CYGWIN) # same player, for MingW FIND_LIBRARY(LIB_EAY NAMES - libeay32 + libeay32 libcrypto32 PATHS ${OPENSSL_ROOT_DIR}/lib/MinGW ) FIND_LIBRARY(SSL_EAY NAMES NAMES - ssleay32 + ssleay32 libssl32 PATHS ${OPENSSL_ROOT_DIR}/lib/MinGW ) @@ -147,7 +144,7 @@ IF(WIN32 AND NOT CYGWIN) # Not sure what to pick for -say- intel, let's use the toplevel ones and hope someone report issues: FIND_LIBRARY(LIB_EAY NAMES - libeay32 + libeay32 libcrypto32 PATHS ${OPENSSL_ROOT_DIR}/lib ${OPENSSL_ROOT_DIR}/lib/VC @@ -155,7 +152,7 @@ IF(WIN32 AND NOT CYGWIN) FIND_LIBRARY(SSL_EAY NAMES - ssleay32 + ssleay32 libssl32 PATHS ${OPENSSL_ROOT_DIR}/lib ${OPENSSL_ROOT_DIR}/lib/VC diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 500f19ec..236f59f3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -58,6 +58,10 @@ if(WIN32) get_filename_component(MYSQL_LIB_DLL ${MYSQL_LIBRARY} NAME) STRING(REPLACE ".lib" ".dll" MYSQL_LIB_DLL ${MYSQL_LIB_DLL}) install(FILES ${MYSQL_LIB_DIR}/${MYSQL_LIB_DLL} DESTINATION ${BIN_DIR}) - install(FILES ${OPENSSL_ROOT_DIR}/libeay32.dll DESTINATION ${BIN_DIR}) + if (OPENSSL_VERSION VERSION_EQUAL "1.1") + install(FILES ${OPENSSL_ROOT_DIR}/libcrypto-1_1.dll DESTINATION ${BIN_DIR} OPTIONAL) + else() + install(FILES ${OPENSSL_ROOT_DIR}/libeay32.dll DESTINATION ${BIN_DIR} OPTIONAL) + endif() endif() endif() diff --git a/src/game/ChatCommands/Level2.cpp b/src/game/ChatCommands/Level2.cpp index 8c733625..601dba78 100644 --- a/src/game/ChatCommands/Level2.cpp +++ b/src/game/ChatCommands/Level2.cpp @@ -2595,8 +2595,6 @@ bool ChatHandler::HandleTicketDeleteCommand(char* args) bool ChatHandler::HandleTicketInfoCommand(char *args) { - char* px = ExtractLiteralArg(&args); - size_t count = sTicketMgr.GetTicketCount(); if (m_session) diff --git a/src/game/ChatCommands/Level3.cpp b/src/game/ChatCommands/Level3.cpp index 3f918b72..2a478fdb 100644 --- a/src/game/ChatCommands/Level3.cpp +++ b/src/game/ChatCommands/Level3.cpp @@ -6238,12 +6238,12 @@ bool ChatHandler::HandleAccountSetAddonCommand(char* args) bool ChatHandler::HandleSendMailHelper(MailDraft& draft, char* args) { // format: "subject text" "mail text" - char* msgSubject = ExtractQuotedArg(&args); - if (!msgSubject) + std::string msgSubject = ExtractQuotedArg(&args); + if (msgSubject.empty()) { return false; } - char* msgText = ExtractQuotedArg(&args); - if (!msgText) + std::string msgText = ExtractQuotedArg(&args); + if (msgText.empty()) { return false; } // msgSubject, msgText isn't NUL after prev. check @@ -6285,12 +6285,12 @@ bool ChatHandler::HandleSendMassMailCommand(char* args) bool ChatHandler::HandleSendItemsHelper(MailDraft& draft, char* args) { // format: "subject text" "mail text" item1[:count1] item2[:count2] ... item12[:count12] - char* msgSubject = ExtractQuotedArg(&args); - if (!msgSubject) + std::string msgSubject = ExtractQuotedArg(&args); + if (msgSubject.empty()) { return false; } - char* msgText = ExtractQuotedArg(&args); - if (!msgText) + std::string msgText = ExtractQuotedArg(&args); + if (msgText.empty()) { return false; } // extract items @@ -6418,8 +6418,8 @@ bool ChatHandler::HandleSendMoneyHelper(MailDraft& draft, char* args) { /// format: "subject text" "mail text" money - char* msgSubject = ExtractQuotedArg(&args); - if (!msgSubject) + std::string msgSubject = ExtractQuotedArg(&args); + if (msgSubject.empty()) { return false; } char* msgText = ExtractQuotedArg(&args); diff --git a/src/game/ChatCommands/debugcmds.cpp b/src/game/ChatCommands/debugcmds.cpp index 23e7eee4..d51c79e4 100644 --- a/src/game/ChatCommands/debugcmds.cpp +++ b/src/game/ChatCommands/debugcmds.cpp @@ -908,9 +908,9 @@ bool ChatHandler::HandleGetValueHelper(Object* target, uint32 field, char* typeS // starting 0 if need as required bitstring format std::string res; res.reserve(1 + 32 + 1); - res = iValue & (1 << (32 - 1)) ? "0" : " "; + res = (iValue & (1 << (32 - 1))) ? "0" : " "; for (int i = 32; i > 0; --i) - { res += iValue & (1 << (i - 1)) ? "1" : "0"; } + { res += (iValue & (1 << (i - 1))) ? "1" : "0"; } DEBUG_LOG(GetMangosString(LANG_GET_BITSTR), guid.GetString().c_str(), field, res.c_str()); PSendSysMessage(LANG_GET_BITSTR_FIELD, guid.GetString().c_str(), field, res.c_str()); break; diff --git a/src/game/WorldHandlers/ChannelHandler.cpp b/src/game/WorldHandlers/ChannelHandler.cpp index 9b80d9f6..900867c8 100644 --- a/src/game/WorldHandlers/ChannelHandler.cpp +++ b/src/game/WorldHandlers/ChannelHandler.cpp @@ -74,8 +74,8 @@ void WorldSession::HandleJoinChannelOpcode(WorldPacket& recvPacket) for (uint32 i = 0; i < sChatChannelsStore.GetNumRows(); ++i) { ChatChannelsEntry const* channel = sChatChannelsStore.LookupEntry(i); - AreaTableEntry const* area = sAreaStore.LookupEntry( - (channel->ChannelID == tradeChannelID || channel->ChannelID == guildRecruitmentChannelID) ? cityLookupAreaID : playerZoneId); + AreaTableEntry const* area = channel ? sAreaStore.LookupEntry( + (channel->ChannelID == tradeChannelID || channel->ChannelID == guildRecruitmentChannelID) ? cityLookupAreaID : playerZoneId) : NULL; if (area && channel) { diff --git a/src/game/WorldHandlers/Group.cpp b/src/game/WorldHandlers/Group.cpp index 320575d6..da8dea0b 100644 --- a/src/game/WorldHandlers/Group.cpp +++ b/src/game/WorldHandlers/Group.cpp @@ -1085,7 +1085,6 @@ void Group::CountTheRoll(Rolls::iterator& rollI) { uint8 maxresul = 0; ObjectGuid maxguid = (*roll->playerVote.begin()).first; - RollVote rollvote = ROLL_PASS; // Fixed: Using uninitialized memory 'rollvote' Roll::PlayerVote::iterator itr; for (itr = roll->playerVote.begin(); itr != roll->playerVote.end(); ++itr) @@ -1162,11 +1161,10 @@ bool Group::IsRollDoneForItem(WorldObject * pObject, const LootItem * pItem) if(RollId.empty()) { return true; } - Roll * roll; - for(Rolls::iterator i = RollId.begin(); i != RollId.end(); i++) + for(Rolls::iterator i = RollId.begin(); i != RollId.end(); ++i) { - roll = *i; + Roll *roll = *i; if(roll->lootedTargetGUID == pObject->GetObjectGuid() && roll->itemid == pItem->itemid && roll->totalPlayersRolling > 1) { return false; } } @@ -1257,11 +1255,9 @@ void Group::SendTargetIconList(WorldSession* session) void Group::SendUpdate() { - Player* player; - for (member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr) { - player = sObjectMgr.GetPlayer(citr->guid); + Player* player = sObjectMgr.GetPlayer(citr->guid); if (!player || !player->GetSession() || player->GetGroup() != this) { continue; } // guess size diff --git a/src/game/WorldHandlers/Map.cpp b/src/game/WorldHandlers/Map.cpp index 20dcd98d..02c78dc2 100644 --- a/src/game/WorldHandlers/Map.cpp +++ b/src/game/WorldHandlers/Map.cpp @@ -1749,8 +1749,8 @@ bool Map::ScriptsStart(DBScriptType type, uint32 id, Object* source, Object* tar for (ScriptScheduleMap::const_iterator searchItr = m_scriptSchedule.begin(); searchItr != m_scriptSchedule.end(); ++searchItr) { if (searchItr->second.IsSameScript(type, id, - execParams & SCRIPT_EXEC_PARAM_UNIQUE_BY_SOURCE ? sourceGuid : ObjectGuid(), - execParams & SCRIPT_EXEC_PARAM_UNIQUE_BY_TARGET ? targetGuid : ObjectGuid(), ownerGuid)) + (execParams & SCRIPT_EXEC_PARAM_UNIQUE_BY_SOURCE) ? sourceGuid : ObjectGuid(), + (execParams & SCRIPT_EXEC_PARAM_UNIQUE_BY_TARGET) ? targetGuid : ObjectGuid(), ownerGuid)) { DEBUG_LOG("DB-SCRIPTS: Process table `dbscripts [type=%d]` id %u. Skip script as script already started for source %s, target %s - ScriptsStartParams %u", type, id, sourceGuid.GetString().c_str(), targetGuid.GetString().c_str(), execParams); return true; diff --git a/src/game/WorldHandlers/ScriptMgr.cpp b/src/game/WorldHandlers/ScriptMgr.cpp index 527f5237..e1d5ff9b 100644 --- a/src/game/WorldHandlers/ScriptMgr.cpp +++ b/src/game/WorldHandlers/ScriptMgr.cpp @@ -1512,7 +1512,7 @@ bool ScriptAction::HandleScriptStep() if (m_script->playSound.flags & 2) { pSource->PlayDistanceSound(m_script->playSound.soundId, pSoundTarget); } else if (m_script->playSound.flags & (4 | 8)) - { m_map->PlayDirectSoundToMap(m_script->playSound.soundId, m_script->playSound.flags & 8 ? pSource->GetZoneId() : 0); } + { m_map->PlayDirectSoundToMap(m_script->playSound.soundId, (m_script->playSound.flags & 8) ? pSource->GetZoneId() : 0); } else { pSource->PlayDirectSound(m_script->playSound.soundId, pSoundTarget); } } diff --git a/src/game/WorldHandlers/World.cpp b/src/game/WorldHandlers/World.cpp index 25473a83..a8a29863 100644 --- a/src/game/WorldHandlers/World.cpp +++ b/src/game/WorldHandlers/World.cpp @@ -2149,7 +2149,7 @@ void World::ShutdownMsg(bool show /*= false*/, Player* player /*= NULL*/) ServerMessageType msgid = (m_ShutdownMask & SHUTDOWN_MASK_RESTART) ? SERVER_MSG_RESTART_TIME : SERVER_MSG_SHUTDOWN_TIME; SendServerMessage(msgid, str.c_str(), player); - DEBUG_LOG("Server is %s in %s", (m_ShutdownMask & SHUTDOWN_MASK_RESTART ? "restart" : "shutting down"), str.c_str()); + DEBUG_LOG("Server is %s in %s", (m_ShutdownMask & SHUTDOWN_MASK_RESTART) ? "restart" : "shutting down", str.c_str()); } } @@ -2169,7 +2169,7 @@ void World::ShutdownCancel() m_ExitCode = SHUTDOWN_EXIT_CODE; // to default value SendServerMessage(msgid); - DEBUG_LOG("Server %s cancelled.", (m_ShutdownMask & SHUTDOWN_MASK_RESTART ? "restart" : "shutdown")); + DEBUG_LOG("Server %s cancelled.", (m_ShutdownMask & SHUTDOWN_MASK_RESTART) ? "restart" : "shutdown"); ///- Used by Eluna #ifdef ENABLE_ELUNA diff --git a/src/mangosd/CMakeLists.txt b/src/mangosd/CMakeLists.txt index 09ce94fe..50d4919d 100644 --- a/src/mangosd/CMakeLists.txt +++ b/src/mangosd/CMakeLists.txt @@ -137,7 +137,6 @@ endif() if(UNIX) target_link_libraries(${EXECUTABLE_NAME} - ${OPENSSL_EXTRA_LIBRARIES} ${ZLIB_LIBRARIES} ) endif() diff --git a/src/shared/Auth/ARC4.cpp b/src/shared/Auth/ARC4.cpp index 19cb1a94..eecad6ad 100644 --- a/src/shared/Auth/ARC4.cpp +++ b/src/shared/Auth/ARC4.cpp @@ -27,32 +27,32 @@ ARC4::ARC4(uint8 len) : m_ctx() { - EVP_CIPHER_CTX_init(&m_ctx); - EVP_EncryptInit_ex(&m_ctx, EVP_rc4(), NULL, NULL, NULL); - EVP_CIPHER_CTX_set_key_length(&m_ctx, len); + m_ctx = EVP_CIPHER_CTX_new(); + EVP_EncryptInit_ex(m_ctx, EVP_rc4(), NULL, NULL, NULL); + EVP_CIPHER_CTX_set_key_length(m_ctx, len); } ARC4::ARC4(uint8 *seed, uint8 len) : m_ctx() { - EVP_CIPHER_CTX_init(&m_ctx); - EVP_EncryptInit_ex(&m_ctx, EVP_rc4(), NULL, NULL, NULL); - EVP_CIPHER_CTX_set_key_length(&m_ctx, len); - EVP_EncryptInit_ex(&m_ctx, NULL, NULL, seed, NULL); + m_ctx = EVP_CIPHER_CTX_new(); + EVP_EncryptInit_ex(m_ctx, EVP_rc4(), NULL, NULL, NULL); + EVP_CIPHER_CTX_set_key_length(m_ctx, len); + EVP_EncryptInit_ex(m_ctx, NULL, NULL, seed, NULL); } ARC4::~ARC4() { - EVP_CIPHER_CTX_cleanup(&m_ctx); + EVP_CIPHER_CTX_free(m_ctx); } void ARC4::Init(uint8 *seed) { - EVP_EncryptInit_ex(&m_ctx, NULL, NULL, seed, NULL); + EVP_EncryptInit_ex(m_ctx, NULL, NULL, seed, NULL); } void ARC4::UpdateData(int len, uint8 *data) { int outlen = 0; - EVP_EncryptUpdate(&m_ctx, data, &outlen, data, len); - EVP_EncryptFinal_ex(&m_ctx, data, &outlen); + EVP_EncryptUpdate(m_ctx, data, &outlen, data, len); + EVP_EncryptFinal_ex(m_ctx, data, &outlen); } diff --git a/src/shared/Auth/ARC4.h b/src/shared/Auth/ARC4.h index 6bfa1bd7..3b4cd493 100644 --- a/src/shared/Auth/ARC4.h +++ b/src/shared/Auth/ARC4.h @@ -38,7 +38,7 @@ class ARC4 void Init(uint8 *seed); void UpdateData(int len, uint8 *data); private: - EVP_CIPHER_CTX m_ctx; + EVP_CIPHER_CTX* m_ctx; }; #endif diff --git a/src/shared/Auth/HMACSHA1.cpp b/src/shared/Auth/HMACSHA1.cpp index 11cb741b..dbc36a49 100644 --- a/src/shared/Auth/HMACSHA1.cpp +++ b/src/shared/Auth/HMACSHA1.cpp @@ -27,13 +27,13 @@ HMACSHA1::HMACSHA1(uint32 len, uint8 *seed) { - HMAC_CTX_init(&m_ctx); - HMAC_Init_ex(&m_ctx, seed, len, EVP_sha1(), NULL); + m_ctx = HMAC_CTX_new(); + HMAC_Init_ex(m_ctx, seed, len, EVP_sha1(), NULL); } HMACSHA1::~HMACSHA1() { - HMAC_CTX_cleanup(&m_ctx); + HMAC_CTX_free(m_ctx); } void HMACSHA1::UpdateBigNumber(BigNumber *bn) @@ -43,7 +43,7 @@ void HMACSHA1::UpdateBigNumber(BigNumber *bn) void HMACSHA1::UpdateData(const uint8 *data, int length) { - HMAC_Update(&m_ctx, data, length); + HMAC_Update(m_ctx, data, length); } void HMACSHA1::UpdateData(const std::string &str) @@ -54,13 +54,13 @@ void HMACSHA1::UpdateData(const std::string &str) void HMACSHA1::Finalize() { uint32 length = 0; - HMAC_Final(&m_ctx, (uint8*)m_digest, &length); + HMAC_Final(m_ctx, (uint8*)m_digest, &length); MANGOS_ASSERT(length == SHA_DIGEST_LENGTH); } uint8 *HMACSHA1::ComputeHash(BigNumber *bn) { - HMAC_Update(&m_ctx, bn->AsByteArray(), bn->GetNumBytes()); + HMAC_Update(m_ctx, bn->AsByteArray(), bn->GetNumBytes()); Finalize(); return (uint8*)m_digest; } \ No newline at end of file diff --git a/src/shared/Auth/HMACSHA1.h b/src/shared/Auth/HMACSHA1.h index bcfa1496..2fd49d8f 100644 --- a/src/shared/Auth/HMACSHA1.h +++ b/src/shared/Auth/HMACSHA1.h @@ -46,7 +46,7 @@ public: uint8 *GetDigest() { return (uint8*)m_digest; } int GetLength() { return SHA_DIGEST_LENGTH; } private: - HMAC_CTX m_ctx; + HMAC_CTX* m_ctx; uint8 m_digest[SHA_DIGEST_LENGTH]; }; #endif \ No newline at end of file