From 176a2c1080c609138b7291828c905cdb979e1f3e Mon Sep 17 00:00:00 2001 From: leak Date: Fri, 13 Jul 2012 09:11:05 +0200 Subject: [PATCH] Core/Warden: Workaround for an OpenSSL bug in the ARC4 stream cipher initialization that causes crashes on some OS - Skip loading warden_action overrides when warden is disabled fixes #6486 --- src/server/game/Warden/WardenCheckMgr.cpp | 8 ++++++++ src/server/shared/Cryptography/ARC4.cpp | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/server/game/Warden/WardenCheckMgr.cpp b/src/server/game/Warden/WardenCheckMgr.cpp index abd7ff8f87..0677758439 100644 --- a/src/server/game/Warden/WardenCheckMgr.cpp +++ b/src/server/game/Warden/WardenCheckMgr.cpp @@ -151,6 +151,14 @@ void WardenCheckMgr::LoadWardenChecks() void WardenCheckMgr::LoadWardenOverrides() { + // Check if Warden is enabled by config before loading anything + if (!sWorld->getBoolConfig(CONFIG_WARDEN_ENABLED)) + { + sLog->outString(">> Warden disabled, loading check overrides skipped."); + sLog->outString(); + return; + } + // 0 1 QueryResult result = CharacterDatabase.Query("SELECT wardenId, action FROM warden_action"); diff --git a/src/server/shared/Cryptography/ARC4.cpp b/src/server/shared/Cryptography/ARC4.cpp index 52a60573ec..5b2cf7a0a9 100755 --- a/src/server/shared/Cryptography/ARC4.cpp +++ b/src/server/shared/Cryptography/ARC4.cpp @@ -19,14 +19,14 @@ #include "ARC4.h" #include -ARC4::ARC4(uint8 len) +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); } -ARC4::ARC4(uint8 *seed, uint8 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);