summaryrefslogtreecommitdiff
path: root/cmac.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2015-11-18 15:32:28 -0500
committerJeffrey Walton <noloader@gmail.com>2015-11-18 15:32:28 -0500
commit6ac1e46a1fb01f01705b67dd553d5ba317b1dc3e (patch)
treef0d873d0b377a91dce5ee384e60426ef57efc92b /cmac.cpp
parentd2fda9bd4231a7dfcb44e59150f11246d992843f (diff)
downloadcryptopp-git-6ac1e46a1fb01f01705b67dd553d5ba317b1dc3e.tar.gz
Cleared issues 11,12,13 (Clang integrated assembler), 58 (RC rollup), 66 (Coverity rollup)
Diffstat (limited to 'cmac.cpp')
-rw-r--r--cmac.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/cmac.cpp b/cmac.cpp
index e8fa6fea..150abd47 100644
--- a/cmac.cpp
+++ b/cmac.cpp
@@ -57,6 +57,7 @@ void CMAC_Base::UncheckedSetKey(const byte *key, unsigned int length, const Name
void CMAC_Base::Update(const byte *input, size_t length)
{
+ assert((input && length) || !(input || length));
if (!length)
return;
@@ -65,11 +66,14 @@ void CMAC_Base::Update(const byte *input, size_t length)
if (m_counter > 0)
{
- unsigned int len = UnsignedMin(blockSize - m_counter, length);
- xorbuf(m_reg+m_counter, input, len);
- length -= len;
- input += len;
- m_counter += len;
+ const unsigned int len = UnsignedMin(blockSize - m_counter, length);
+ if (len)
+ {
+ xorbuf(m_reg+m_counter, input, len);
+ length -= len;
+ input += len;
+ m_counter += len;
+ }
if (m_counter == blockSize && length > 0)
{