aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAva Chow <github@achow101.com>2024-02-22 08:59:12 -0500
committerAva Chow <github@achow101.com>2024-02-22 08:59:30 -0500
commit1ac627c485a43e50a9a49baddce186ee3ad4daad (patch)
tree73ed15fa6d987b4f0565229e9719e4e595822791 /src
parent88b1229c134fa006d9a57e908ebebec944419347 (diff)
parent9dae3b970a7a82e8d9f3f755048d427da78c49da (diff)
downloadbitcoin-1ac627c485a43e50a9a49baddce186ee3ad4daad.tar.xz
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
Diffstat (limited to 'src')
-rw-r--r--src/wallet/test/fuzz/coinselection.cpp2
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;