diff options
author | Jeffrey Walton <noloader@gmail.com> | 2015-07-17 07:13:23 -0400 |
---|---|---|
committer | Jeffrey Walton <noloader@gmail.com> | 2015-07-17 07:13:23 -0400 |
commit | 427e1cf0281b10780d8cc40a4f1ebe9f817acaaa (patch) | |
tree | 08c67d28156edeca6e4bd18cfb7b603e933c6d6a /iterhash.cpp | |
parent | 3a08e02f71905b77ca7852c09c8a1b46f13a8049 (diff) | |
download | cryptopp-git-427e1cf0281b10780d8cc40a4f1ebe9f817acaaa.tar.gz |
Cleared UBsan warnings under GCC 5.1
Diffstat (limited to 'iterhash.cpp')
-rw-r--r-- | iterhash.cpp | 12 |
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; |