Merge #20761: fuzz: Check that NULL_DATA is unspendable

fa26303286 fuzz: Check that NULL_DATA is unspendable (MarcoFalke)

Pull request description:

  * Every script of type NULL_DATA must be unspendable
  * The only know types of unspendable scripts are NULL_DATA and certain NONSTANDARD scripts

ACKs for top commit:
  sipa:
    utACK fa26303286

Tree-SHA512: 8297fbacf32b4868b12accc1c052d352d02d96540a1fc883de9d04a3df8734116deecc33046495c9a3af6d79fec7f8d63afbfa5e401a2ca8d7c70f0f13735c0d
pull/826/head
MarcoFalke 4 years ago
commit 443988d406
No known key found for this signature in database
GPG Key ID: D2EA4850E7528B25

@ -72,6 +72,13 @@ FUZZ_TARGET_INIT(script, initialize_script)
TxoutType which_type; TxoutType which_type;
(void)IsStandard(script, which_type); (void)IsStandard(script, which_type);
if (which_type == TxoutType::NULL_DATA) {
assert(script.IsUnspendable());
}
if (script.IsUnspendable()) {
assert(which_type == TxoutType::NULL_DATA ||
which_type == TxoutType::NONSTANDARD);
}
(void)RecursiveDynamicUsage(script); (void)RecursiveDynamicUsage(script);
@ -82,7 +89,6 @@ FUZZ_TARGET_INIT(script, initialize_script)
(void)script.IsPayToScriptHash(); (void)script.IsPayToScriptHash();
(void)script.IsPayToWitnessScriptHash(); (void)script.IsPayToWitnessScriptHash();
(void)script.IsPushOnly(); (void)script.IsPushOnly();
(void)script.IsUnspendable();
(void)script.GetSigOpCount(/* fAccurate= */ false); (void)script.GetSigOpCount(/* fAccurate= */ false);
(void)FormatScript(script); (void)FormatScript(script);

Loading…
Cancel
Save