From 700203ad1efa6e988472188121744453af5c6279 Mon Sep 17 00:00:00 2001 From: leak Date: Tue, 6 Mar 2012 17:21:52 +0100 Subject: [PATCH] Core/Shared: Add thread-safe access to BigNumber::AsByteArray() fixes #5469 --- src/server/shared/Cryptography/BigNumber.cpp | 2 ++ src/server/shared/Cryptography/BigNumber.h | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/src/server/shared/Cryptography/BigNumber.cpp b/src/server/shared/Cryptography/BigNumber.cpp index f55e87c99f..146ea778f4 100755 --- a/src/server/shared/Cryptography/BigNumber.cpp +++ b/src/server/shared/Cryptography/BigNumber.cpp @@ -169,6 +169,8 @@ uint8 *BigNumber::AsByteArray(int minSize, bool reverse) { int length = (minSize >= GetNumBytes()) ? minSize : GetNumBytes(); + ACE_GUARD_RETURN(ACE_Mutex, g, _lock, 0); + if (_array) { delete[] _array; diff --git a/src/server/shared/Cryptography/BigNumber.h b/src/server/shared/Cryptography/BigNumber.h index 7196aae657..6646245a6a 100755 --- a/src/server/shared/Cryptography/BigNumber.h +++ b/src/server/shared/Cryptography/BigNumber.h @@ -20,6 +20,7 @@ #define _AUTH_BIGNUMBER_H #include "Define.h" +#include struct bignum_st; @@ -89,6 +90,10 @@ class BigNumber private: struct bignum_st *_bn; uint8 *_array; + + // This mutex only controls thread-safe access to AsByteArray() and should be replaced with a thread-safe implementation of BigNumber + ACE_Mutex _lock; + }; #endif