diff options
author | Gregory Maxwell <greg@xiph.org> | 2017-04-02 21:39:32 +0000 |
---|---|---|
committer | Gregory Maxwell <greg@xiph.org> | 2017-04-03 07:15:36 +0000 |
commit | 4f15ea102d15eb237b63464725508dc509e98819 (patch) | |
tree | ed68b29e42f3cf9bf79e741203aca1b0e7e54a89 | |
parent | ada0caa165905b50db351a56ec124518c922085a (diff) |
Check transaction count early in submitblock.
There is no point in even hashing a submitted block which doesn't have
a coinbase transaction.
This also results in more useful error reporting on corrupted input.
Thanks to rawodb for the bug report.
-rw-r--r-- | src/rpc/mining.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index b823c159d3..cfa6edae12 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -744,6 +744,10 @@ UniValue submitblock(const JSONRPCRequest& request) if (!DecodeHexBlk(block, request.params[0].get_str())) throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "Block decode failed"); + if (block.vtx.empty() || !block.vtx[0]->IsCoinBase()) { + throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "Block does not start with a coinbase"); + } + uint256 hash = block.GetHash(); bool fBlockPresent = false; { |