mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 12:32:48 +01:00
add checks for deserialization errors
This commit is contained in:
parent
232aa9e034
commit
81bfb5aebf
@ -177,27 +177,36 @@ BOOST_AUTO_TEST_CASE(sighash_from_data)
|
|||||||
}
|
}
|
||||||
if (test.size() == 1) continue; // comment
|
if (test.size() == 1) continue; // comment
|
||||||
|
|
||||||
std::string raw_tx = test[0].get_str();
|
std::string raw_tx, raw_script, sigHashHex;
|
||||||
std::string raw_script = test[1].get_str();
|
int nIn, nHashType;
|
||||||
int nIn = test[2].get_int();
|
|
||||||
int nHashType = test[3].get_int();
|
|
||||||
std::string sigHashHex = test[4].get_str();
|
|
||||||
|
|
||||||
uint256 sh;
|
uint256 sh;
|
||||||
CDataStream stream(ParseHex(raw_tx), SER_NETWORK, PROTOCOL_VERSION);
|
|
||||||
CTransaction tx;
|
CTransaction tx;
|
||||||
stream >> tx;
|
|
||||||
|
|
||||||
CValidationState state;
|
|
||||||
BOOST_CHECK_MESSAGE(CheckTransaction(tx, state), strTest);
|
|
||||||
BOOST_CHECK(state.IsValid());
|
|
||||||
|
|
||||||
CScript scriptCode = CScript();
|
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);
|
sh = SignatureHash(scriptCode, tx, nIn, nHashType);
|
||||||
|
|
||||||
BOOST_CHECK_MESSAGE(sh.GetHex() == sigHashHex, strTest);
|
BOOST_CHECK_MESSAGE(sh.GetHex() == sigHashHex, strTest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user