Package: libcrypto++6
Version: 5.6.3-6
Severity: important
Tags: patch

Dear Maintainer,

The code in cmac.cpp CMAC_Base::Update() has an assertion that fails
if a zero-length section is passed into it.  Zero is meant to work:
there's a guard for zero length just after the assertion.


Swapping the assertion and the guard allows correct behaviour.

diff -u -r libcrypto++-5.6.3/cmac.cpp libcrypto++-5.6.3-local/cmac.cpp
--- libcrypto++-5.6.3/cmac.cpp  2015-11-14 00:04:22.000000000 +1100
+++ libcrypto++-5.6.3-local/cmac.cpp    2016-08-02 10:49:51.659422114 +1000
@@ -57,9 +57,9 @@
 
 void CMAC_Base::Update(const byte *input, size_t length)
 {
-       assert((input && length) || !(input || length));
        if (!length)
                return;
+       assert((input && length) || !(input || length));
 
        BlockCipher &cipher = AccessCipher();
        unsigned int blockSize = cipher.BlockSize();


-- System Information:
Debian Release: stretch/sid
  APT prefers unstable
  APT policy: (990, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, armhf, armel, arm64

Kernel: Linux 4.7.0-rc6 (SMP w/8 CPU cores)
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: systemd (via /run/systemd/system)

Versions of packages libcrypto++6 depends on:
ii  libc6       2.22-9
ii  libgcc1     1:6.1.1-3
ii  libstdc++6  6.1.1-3

libcrypto++6 recommends no packages.

libcrypto++6 suggests no packages.

-- no debconf information

Reply via email to