diff options
author | Ava Chow <github@achow101.com> | 2024-02-22 08:59:12 -0500 |
---|---|---|
committer | Ava Chow <github@achow101.com> | 2024-02-22 08:59:30 -0500 |
commit | 1ac627c485a43e50a9a49baddce186ee3ad4daad (patch) | |
tree | 73ed15fa6d987b4f0565229e9719e4e595822791 | |
parent | 88b1229c134fa006d9a57e908ebebec944419347 (diff) | |
parent | 9dae3b970a7a82e8d9f3f755048d427da78c49da (diff) |
Merge bitcoin/bitcoin#29462: [fuzz] Avoid partial negative result
9dae3b970a7a82e8d9f3f755048d427da78c49da [fuzz] Avoid partial negative result (Murch)
Pull request description:
May address the problem reported by maflcko in https://github.com/bitcoin/bitcoin/pull/27877#pullrequestreview-1890304914.
For some values, `MAX_MONEY - max_spendable - max_output_groups` could result in a partial negative value. By putting the addition of `group_pos.size()` first, all partial results in this line will be strictly positive.
I opened this as a draft, since I was unable to reproduce the issue, so I’m waiting for confirmation whether this in fact mitigates the problem.
ACKs for top commit:
maflcko:
ACK 9dae3b970a7a82e8d9f3f755048d427da78c49da
sipa:
utACK 9dae3b970a7a82e8d9f3f755048d427da78c49da
achow101:
ACK 9dae3b970a7a82e8d9f3f755048d427da78c49da
brunoerg:
crACK 9dae3b970a7a82e8d9f3f755048d427da78c49da
Tree-SHA512: 744b4706268d8dfd77538b99492ecf3cf77d229095f9bcd416a412131336830e2f134f2b2846c79abd3d193426f97c1f71eeaf68b16ab00e76318d57ee3673c7
-rw-r--r-- | src/wallet/test/fuzz/coinselection.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/wallet/test/fuzz/coinselection.cpp b/src/wallet/test/fuzz/coinselection.cpp index 3ffeecdf34..297432de9e 100644 --- a/src/wallet/test/fuzz/coinselection.cpp +++ b/src/wallet/test/fuzz/coinselection.cpp @@ -158,7 +158,7 @@ FUZZ_TARGET(coin_grinder_is_optimal) // Only make UTXOs with positive effective value const CAmount input_fee = coin_params.m_effective_feerate.GetFee(n_input_bytes); // Ensure that each UTXO has at least an effective value of 1 sat - const CAmount eff_value{fuzzed_data_provider.ConsumeIntegralInRange<CAmount>(1, MAX_MONEY - max_spendable - max_output_groups + group_pos.size())}; + const CAmount eff_value{fuzzed_data_provider.ConsumeIntegralInRange<CAmount>(1, MAX_MONEY + group_pos.size() - max_spendable - max_output_groups)}; const CAmount amount{eff_value + input_fee}; std::vector<COutput> temp_utxo_pool; |