diff options
author | Manuel Araoz <manuelaraoz@gmail.com> | 2014-03-31 15:07:46 -0300 |
---|---|---|
committer | Manuel Araoz <manuelaraoz@gmail.com> | 2014-03-31 15:07:46 -0300 |
commit | 81bfb5aebf983f999d3de12ca4adf8cd4c4a8ae0 (patch) | |
tree | 1e2cd9ddbef2661a188fd0f4a568011a267089dd | |
parent | 232aa9e034d4d48f4d16dfdc6bc0d56c9274cfd3 (diff) |
add checks for deserialization errors
-rw-r--r-- | src/test/sighash_tests.cpp | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/src/test/sighash_tests.cpp b/src/test/sighash_tests.cpp index 9985ad6928..353fd60f7b 100644 --- a/src/test/sighash_tests.cpp +++ b/src/test/sighash_tests.cpp @@ -177,27 +177,36 @@ BOOST_AUTO_TEST_CASE(sighash_from_data) } if (test.size() == 1) continue; // comment - std::string raw_tx = test[0].get_str(); - std::string raw_script = test[1].get_str(); - int nIn = test[2].get_int(); - int nHashType = test[3].get_int(); - std::string sigHashHex = test[4].get_str(); - + std::string raw_tx, raw_script, sigHashHex; + int nIn, nHashType; uint256 sh; - CDataStream stream(ParseHex(raw_tx), SER_NETWORK, PROTOCOL_VERSION); CTransaction tx; - stream >> tx; - - CValidationState state; - BOOST_CHECK_MESSAGE(CheckTransaction(tx, state), strTest); - BOOST_CHECK(state.IsValid()); - CScript scriptCode = CScript(); - std::vector<unsigned char> raw = ParseHex(raw_script); - scriptCode.insert(scriptCode.end(), raw.begin(), raw.end()); + try { + // deserialize test data + raw_tx = test[0].get_str(); + raw_script = test[1].get_str(); + nIn = test[2].get_int(); + nHashType = test[3].get_int(); + sigHashHex = test[4].get_str(); + + uint256 sh; + CDataStream stream(ParseHex(raw_tx), SER_NETWORK, PROTOCOL_VERSION); + stream >> tx; + + CValidationState state; + BOOST_CHECK_MESSAGE(CheckTransaction(tx, state), strTest); + BOOST_CHECK(state.IsValid()); + + std::vector<unsigned char> raw = ParseHex(raw_script); + scriptCode.insert(scriptCode.end(), raw.begin(), raw.end()); + } catch (...) { + BOOST_ERROR("Bad test, couldn't deserialize data: " << strTest); + continue; + } + sh = SignatureHash(scriptCode, tx, nIn, nHashType); - BOOST_CHECK_MESSAGE(sh.GetHex() == sigHashHex, strTest); } } |