| 12 | #include <vector> |
| 13 | |
| 14 | FUZZ_TARGET(script_ops) |
| 15 | { |
| 16 | FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); |
| 17 | CScript script_mut = ConsumeScript(fuzzed_data_provider); |
| 18 | LIMITED_WHILE(fuzzed_data_provider.remaining_bytes() > 0, 1000000) { |
| 19 | CallOneOf( |
| 20 | fuzzed_data_provider, |
| 21 | [&] { |
| 22 | CScript s = ConsumeScript(fuzzed_data_provider); |
| 23 | script_mut = std::move(s); |
| 24 | }, |
| 25 | [&] { |
| 26 | const CScript& s = ConsumeScript(fuzzed_data_provider); |
| 27 | script_mut = s; |
| 28 | }, |
| 29 | [&] { |
| 30 | script_mut << fuzzed_data_provider.ConsumeIntegral<int64_t>(); |
| 31 | }, |
| 32 | [&] { |
| 33 | script_mut << ConsumeOpcodeType(fuzzed_data_provider); |
| 34 | }, |
| 35 | [&] { |
| 36 | script_mut << ConsumeScriptNum(fuzzed_data_provider); |
| 37 | }, |
| 38 | [&] { |
| 39 | script_mut << ConsumeRandomLengthByteVector(fuzzed_data_provider); |
| 40 | }, |
| 41 | [&] { |
| 42 | script_mut.clear(); |
| 43 | }); |
| 44 | } |
| 45 | const CScript& script = script_mut; |
| 46 | (void)script.GetSigOpCount(false); |
| 47 | (void)script.GetSigOpCount(true); |
| 48 | (void)script.GetSigOpCount(script); |
| 49 | (void)script.HasValidOps(); |
| 50 | (void)script.IsPayToScriptHash(); |
| 51 | (void)script.IsPayToAnchor(); |
| 52 | (void)script.IsPayToWitnessScriptHash(); |
| 53 | (void)script.IsPushOnly(); |
| 54 | (void)script.IsUnspendable(); |
| 55 | { |
| 56 | CScript::const_iterator pc = script.begin(); |
| 57 | opcodetype opcode; |
| 58 | (void)script.GetOp(pc, opcode); |
| 59 | std::vector<uint8_t> data; |
| 60 | (void)script.GetOp(pc, opcode, data); |
| 61 | (void)script.IsPushOnly(pc); |
| 62 | } |
| 63 | { |
| 64 | int version; |
| 65 | std::vector<uint8_t> program; |
| 66 | (void)script.IsWitnessProgram(version, program); |
| 67 | } |
| 68 | } |
nothing calls this directly
no test coverage detected