1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-01-11 07:50:57 +00:00

legacy: forbid unnecessary fields in OPRETURN output

This commit is contained in:
Tomas Susanka 2020-03-06 07:33:24 +00:00
parent 4af9aa547e
commit a513f7429b
3 changed files with 17 additions and 2 deletions

View File

@ -652,6 +652,15 @@ static bool signing_check_output(TxOutputType *txoutput) {
// add it to hash_outputs
// ask user for permission
if (txoutput->script_type == OutputScriptType_PAYTOOPRETURN) {
if (txoutput->has_address || (txoutput->address_n_count > 0) ||
txoutput->has_multisig) {
fsm_sendFailure(FailureType_Failure_DataError,
_("OP_RETURN output with address or multisig"));
signing_abort();
return false;
}
}
// check for change address
bool is_change = false;
if (txoutput->address_n_count > 0) {

View File

@ -199,7 +199,8 @@ int compile_output(const CoinInfo *coin, const HDNode *root, TxOutputType *in,
if (in->script_type == OutputScriptType_PAYTOOPRETURN) {
// only 0 satoshi allowed for OP_RETURN
if (in->amount != 0) {
if (in->amount != 0 || in->has_address || (in->address_n_count > 0) ||
in->has_multisig) {
return 0; // failed to compile output
}
if (needs_confirm) {

View File

@ -236,4 +236,9 @@ class TestOpReturn:
)
assert exc.value.args[0] == proto.FailureType.DataError
assert exc.value.args[1] == "OP_RETURN output with address or multisig"
if client.features.model == "1":
assert exc.value.args[1].endswith(
"OP_RETURN output with address or multisig"
)
else:
assert exc.value.args[1] == "OP_RETURN output with address or multisig"