0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-10 10:52:31 -05:00

Merge bitcoin/bitcoin#28931: fuzz: Limit fuzz buffer size in script_flags target

faf1fb207f Fix IWYU for the script_flags fuzz target (MarcoFalke)
fa71285b73 fuzz: Limit fuzz buffer size in script_flags target (MarcoFalke)
fa6b87b9ee fuzz: CDataStream -> DataStream in script_flags (MarcoFalke)

Pull request description:

  Most fuzz targets have an upper limit on the buffer size to avoid excessive runtime. Do the same for `script_flags` to avoid timeouts such as https://github.com/bitcoin/bitcoin/issues/28812#issuecomment-1824696971

  Also, fix iwyu. Also, remove legacy `CDataStream`.

ACKs for top commit:
  dergoegge:
    ACK faf1fb207f
  brunoerg:
    utACK faf1fb207f

Tree-SHA512: 9301917b353f7409e448b6fd3635de19330856e0742431db5ef04e62873501b5b4cd6cb78ad81ada2747fa2bdae033115b5951d10489dd5d0d320426c8b96bee
This commit is contained in:
fanquake 2023-11-26 12:17:18 +00:00
commit 5f9fd11680
No known key found for this signature in database
GPG key ID: 2EEB9F5CC09526C1
2 changed files with 19 additions and 20 deletions

View file

@ -6,21 +6,23 @@
#ifndef BITCOIN_SCRIPT_INTERPRETER_H #ifndef BITCOIN_SCRIPT_INTERPRETER_H
#define BITCOIN_SCRIPT_INTERPRETER_H #define BITCOIN_SCRIPT_INTERPRETER_H
#include <consensus/amount.h>
#include <hash.h> #include <hash.h>
#include <script/script_error.h>
#include <span.h>
#include <primitives/transaction.h> #include <primitives/transaction.h>
#include <script/script_error.h> // IWYU pragma: export
#include <span.h>
#include <uint256.h>
#include <cstddef>
#include <cstdint>
#include <optional> #include <optional>
#include <vector> #include <vector>
#include <stdint.h>
class CPubKey; class CPubKey;
class XOnlyPubKey;
class CScript; class CScript;
class CTransaction; class CScriptNum;
class CTxOut; class XOnlyPubKey;
class uint256; struct CScriptWitness;
/** Signature hash types/flags */ /** Signature hash types/flags */
enum enum

View file

@ -3,25 +3,22 @@
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <consensus/amount.h> #include <consensus/amount.h>
#include <pubkey.h> #include <primitives/transaction.h>
#include <script/interpreter.h> #include <script/interpreter.h>
#include <serialize.h>
#include <streams.h> #include <streams.h>
#include <test/util/script.h>
#include <version.h>
#include <test/fuzz/fuzz.h> #include <test/fuzz/fuzz.h>
#include <test/util/script.h>
#include <cassert>
#include <ios>
#include <utility>
#include <vector>
FUZZ_TARGET(script_flags) FUZZ_TARGET(script_flags)
{ {
CDataStream ds(buffer, SER_NETWORK, INIT_PROTO_VERSION); if (buffer.size() > 100'000) return;
try { DataStream ds{buffer};
int nVersion;
ds >> nVersion;
ds.SetVersion(nVersion);
} catch (const std::ios_base::failure&) {
return;
}
try { try {
const CTransaction tx(deserialize, TX_WITH_WITNESS, ds); const CTransaction tx(deserialize, TX_WITH_WITNESS, ds);