diff --git a/cryptlib.cpp b/cryptlib.cpp index 9f1e749c..24eb0209 100644 --- a/cryptlib.cpp +++ b/cryptlib.cpp @@ -171,18 +171,18 @@ size_t BlockTransformation::AdvancedProcessBlocks(const byte *inBlocks, const by outIncrement = 0-outIncrement; } - // Coverity finding CID 147865. In practice, if BT_XorInput, then xorBlocks is non-NULL. - bool xorFlag = (flags & BT_XorInput) && (xorBlocks != NULLPTR); while (length >= blockSize) { - if (xorFlag) + if (flags & BT_XorInput) { + // Coverity finding. However, xorBlocks is never NULL if BT_XorInput. + CRYPTOPP_ASSERT(xorBlocks); xorbuf(outBlocks, xorBlocks, inBlocks, blockSize); - xorBlocks += xorIncrement; ProcessBlock(outBlocks); } else { + // xorBlocks can be NULL. See, for example, ECB_OneWay::ProcessData. ProcessAndXorBlock(inBlocks, xorBlocks, outBlocks); } @@ -190,6 +190,7 @@ size_t BlockTransformation::AdvancedProcessBlocks(const byte *inBlocks, const by const_cast(inBlocks)[blockSize-1]++; inBlocks += inIncrement; outBlocks += outIncrement; + xorBlocks += xorIncrement; length -= blockSize; }