diff --git a/src/support/allocators/secure.h b/src/support/allocators/secure.h index 459d3a12ef..f3970a35a4 100644 --- a/src/support/allocators/secure.h +++ b/src/support/allocators/secure.h @@ -1,54 +1,54 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2016 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_SUPPORT_ALLOCATORS_SECURE_H #define BITCOIN_SUPPORT_ALLOCATORS_SECURE_H #include "support/cleanse.h" #include "support/lockedpool.h" #include // // Allocator that locks its contents from being paged // out of memory and clears its contents before deletion. // template struct secure_allocator : public std::allocator { // MSVC8 default copy constructor is broken typedef std::allocator base; typedef typename base::size_type size_type; typedef typename base::difference_type difference_type; typedef typename base::pointer pointer; typedef typename base::const_pointer const_pointer; typedef typename base::reference reference; typedef typename base::const_reference const_reference; typedef typename base::value_type value_type; - secure_allocator() throw() {} - secure_allocator(const secure_allocator &a) throw() : base(a) {} + secure_allocator() noexcept {} + secure_allocator(const secure_allocator &a) noexcept : base(a) {} template - secure_allocator(const secure_allocator &a) throw() : base(a) {} - ~secure_allocator() throw() {} + secure_allocator(const secure_allocator &a) noexcept : base(a) {} + ~secure_allocator() noexcept {} template struct rebind { typedef secure_allocator<_Other> other; }; T *allocate(std::size_t n, const void *hint = 0) { return static_cast( LockedPoolManager::Instance().alloc(sizeof(T) * n)); } void deallocate(T *p, std::size_t n) { if (p != nullptr) { memory_cleanse(p, sizeof(T) * n); } LockedPoolManager::Instance().free(p); } }; // This is exactly like std::string, but with a custom allocator. typedef std::basic_string, secure_allocator> SecureString; #endif // BITCOIN_SUPPORT_ALLOCATORS_SECURE_H diff --git a/src/support/allocators/zeroafterfree.h b/src/support/allocators/zeroafterfree.h index 34c1681106..eeeeeedb2a 100644 --- a/src/support/allocators/zeroafterfree.h +++ b/src/support/allocators/zeroafterfree.h @@ -1,45 +1,45 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2015 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_SUPPORT_ALLOCATORS_ZEROAFTERFREE_H #define BITCOIN_SUPPORT_ALLOCATORS_ZEROAFTERFREE_H #include "support/cleanse.h" #include #include template struct zero_after_free_allocator : public std::allocator { // MSVC8 default copy constructor is broken typedef std::allocator base; typedef typename base::size_type size_type; typedef typename base::difference_type difference_type; typedef typename base::pointer pointer; typedef typename base::const_pointer const_pointer; typedef typename base::reference reference; typedef typename base::const_reference const_reference; typedef typename base::value_type value_type; - zero_after_free_allocator() throw() {} - zero_after_free_allocator(const zero_after_free_allocator &a) throw() + zero_after_free_allocator() noexcept {} + zero_after_free_allocator(const zero_after_free_allocator &a) noexcept : base(a) {} template - zero_after_free_allocator(const zero_after_free_allocator &a) throw() + zero_after_free_allocator(const zero_after_free_allocator &a) noexcept : base(a) {} - ~zero_after_free_allocator() throw() {} + ~zero_after_free_allocator() noexcept {} template struct rebind { typedef zero_after_free_allocator<_Other> other; }; void deallocate(T *p, std::size_t n) { if (p != nullptr) memory_cleanse(p, sizeof(T) * n); std::allocator::deallocate(p, n); } }; // Byte-vector that clears its contents before deletion. typedef std::vector> CSerializeData; #endif // BITCOIN_SUPPORT_ALLOCATORS_ZEROAFTERFREE_H