summaryrefslogtreecommitdiff
path: root/secblock.h
diff options
context:
space:
mode:
authorweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2010-06-18 07:06:59 +0000
committerweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2010-06-18 07:06:59 +0000
commite562437c88d18d206d079aa0ed07f5be57203a4a (patch)
tree2c3909fc3181e50ef34814d62769b02277bc13a5 /secblock.h
parent70a991f0023a3bd23bfd6ffd0b665f1dbed701bf (diff)
downloadcryptopp-e562437c88d18d206d079aa0ed07f5be57203a4a.tar.gz
fix possible race condition in Singleton::Ref()
tolerate double destruction of Singleton and g_nullNameValuePairs fix #include of standard headers git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@488 57ff6487-cd31-0410-9ec3-f628ee90f5f0
Diffstat (limited to 'secblock.h')
-rw-r--r--secblock.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/secblock.h b/secblock.h
index 6f3aa63..760633e 100644
--- a/secblock.h
+++ b/secblock.h
@@ -9,8 +9,6 @@
#if defined(CRYPTOPP_MEMALIGN_AVAILABLE) || defined(CRYPTOPP_MM_MALLOC_AVAILABLE) || defined(QNX)
#include <malloc.h>
-#else
- #include <stdlib.h>
#endif
NAMESPACE_BEGIN(CryptoPP)
@@ -352,8 +350,11 @@ public:
//! copy contents and size from another SecBlock
void Assign(const SecBlock<T, A> &t)
{
- New(t.m_size);
- memcpy_s(m_ptr, m_size*sizeof(T), t.m_ptr, m_size*sizeof(T));
+ if (this != &t)
+ {
+ New(t.m_size);
+ memcpy_s(m_ptr, m_size*sizeof(T), t.m_ptr, m_size*sizeof(T));
+ }
}
SecBlock<T, A>& operator=(const SecBlock<T, A> &t)