diff --git a/src/validation.cpp b/src/validation.cpp index 8780d5f371..9a6a751b17 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -4230,6 +4230,10 @@ bool ChainstateManager::ProcessNewBlock(const std::shared_ptr& blo // malleability that cause CheckBlock() to fail; see e.g. CVE-2012-2459 and // https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-February/016697.html. Because CheckBlock() is // not very expensive, the anti-DoS benefits of caching failure (of a definitely-invalid block) are not substantial. + // Blackcoin: also check for the signature encoding + if (!CheckCanonicalBlockSignature(block)) { + return error("%s: AcceptBlock FAILED (%s)", __func__, "bad block signature encoding"); + } bool ret = CheckBlock(*block, state, GetConsensus(), ActiveChainstate()); if (ret) { // Store to disk