summaryrefslogtreecommitdiff
path: root/iterhash.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2015-07-17 07:13:23 -0400
committerJeffrey Walton <noloader@gmail.com>2015-07-17 07:13:23 -0400
commit427e1cf0281b10780d8cc40a4f1ebe9f817acaaa (patch)
tree08c67d28156edeca6e4bd18cfb7b603e933c6d6a /iterhash.cpp
parent3a08e02f71905b77ca7852c09c8a1b46f13a8049 (diff)
downloadcryptopp-git-427e1cf0281b10780d8cc40a4f1ebe9f817acaaa.tar.gz
Cleared UBsan warnings under GCC 5.1
Diffstat (limited to 'iterhash.cpp')
-rw-r--r--iterhash.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/iterhash.cpp b/iterhash.cpp
index 1e31e9fb..bc2f4fdf 100644
--- a/iterhash.cpp
+++ b/iterhash.cpp
@@ -27,7 +27,9 @@ template <class T, class BASE> void IteratedHashBase<T, BASE>::Update(const byte
{
if (num+len >= blockSize)
{
- memcpy(data+num, input, blockSize-num);
+ if(data && input)
+ memcpy(data+num, input, blockSize-num);
+
HashBlock(dataBuf);
input += (blockSize-num);
len -= (blockSize-num);
@@ -36,7 +38,9 @@ template <class T, class BASE> void IteratedHashBase<T, BASE>::Update(const byte
}
else
{
- memcpy(data+num, input, len);
+ if(data && input)
+ memcpy(data+num, input, len);
+
return;
}
}
@@ -59,7 +63,9 @@ template <class T, class BASE> void IteratedHashBase<T, BASE>::Update(const byte
else
do
{ // copy input first if it's not aligned correctly
- memcpy(data, input, blockSize);
+ if(data && input)
+ memcpy(data, input, blockSize);
+
HashBlock(dataBuf);
input+=blockSize;
len-=blockSize;