Merge bitcoin/bitcoin#34887: fuzz: target CDBWrapper

b63ef20d54 test: add fuzz harness for CDBWrapper (Andrew Toth)
32169c3855 dbwrapper: accept optional testing leveldb::Env in DBParams (Andrew Toth)
8d390c93fc dbwrapper: make max_file_size a configurable DBParams field (Andrew Toth)

Pull request description:

  Inspired by https://github.com/bitcoin/bitcoin/pull/34866#issuecomment-4090291488.

  We currently don't have a dedicated harness targeting `CDBWrapper`. OSS-Fuzz has a [rudimentary harness](https://github.com/google/oss-fuzz/blob/master/projects/leveldb/fuzz_db.cc) for levelDB [which fails](https://issues.oss-fuzz.com/issues/447252244), so doesn't appear maintained.

  This PR adds a harness targeting `CDBWrapper` against an in-memory oracle to verify correctness.

  A `DeterministicEnv` wraps levelDB's `memenv` to eliminate non-determinism by capturing background compaction and running it at fuzzer-chosen points.
  The fuzzer also controls the cache_bytes and max_file_size sizes so that small values trigger memtable flushes and compaction.

ACKs for top commit:
  l0rinc:
    code review ACK b63ef20d54
  marcofleon:
    ACK b63ef20d54
  dergoegge:
    utACK b63ef20d54
  sedited:
    ACK b63ef20d54

Tree-SHA512: da1f738ec90c49830a05b8990bdaa474299b573e966e60f4febef1292d9682f2e50f0016831f26bf4677e5afdaa142dc8766d871c6bce90d35f1695d480ac8c1
This commit is contained in:
merge-script
2026-05-21 15:03:49 +01:00
5 changed files with 347 additions and 4 deletions

View File

@@ -19,6 +19,7 @@ implicit-integer-sign-change:*/include/c++/
implicit-integer-sign-change:*/new_allocator.h
implicit-integer-sign-change:*/qarraydata.h
implicit-integer-sign-change:crc32c/
implicit-integer-sign-change:BytewiseComparatorImpl::FindShortSuccessor
implicit-integer-sign-change:minisketch/
implicit-integer-sign-change:secp256k1/
implicit-signed-integer-truncation:*/include/c++/