aboutsummaryrefslogtreecommitdiff
path: root/src/arith_uint256.cpp
diff options
context:
space:
mode:
authorPavlos Antoniou <antoniou-p@hotmail.com>2017-06-07 17:21:29 +0000
committerPavlos Antoniou <antoniou-p@hotmail.com>2017-06-07 17:21:29 +0000
commite5c616888b50ba1c35dd99e5500ef2c4dff5b4f9 (patch)
tree41c26f5d7a875bf9cd072dff559b384ea8df0774 /src/arith_uint256.cpp
parent46311e792f4e4a53b7dc418215b03d890d0594d5 (diff)
downloadbitcoin-e5c616888b50ba1c35dd99e5500ef2c4dff5b4f9.tar.xz
Fix instantiation and array accesses in class base_uint<BITS>
The implementation of base_uint::operator++(int) and base_uint::operator--(int) is now safer. Array pn is accessed via index i after bounds checking has been performed on the index, rather than before. The logic of the while loops has also been made more clear. A compile time assertion has been added in the class constructors to ensure that BITS is a positive multiple of 32.
Diffstat (limited to 'src/arith_uint256.cpp')
-rw-r--r--src/arith_uint256.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/arith_uint256.cpp b/src/arith_uint256.cpp
index dd34a313b7..b4952af6f4 100644
--- a/src/arith_uint256.cpp
+++ b/src/arith_uint256.cpp
@@ -15,6 +15,8 @@
template <unsigned int BITS>
base_uint<BITS>::base_uint(const std::string& str)
{
+ static_assert(BITS/32 > 0 && BITS%32 == 0, "Template parameter BITS must be a positive multiple of 32.");
+
SetHex(str);
}