aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorselsta <selsta@sent.at>2026-06-02 19:29:40 +0200
committerselsta <selsta@sent.at>2026-06-15 13:42:54 +0200
commitb99d15f08d80a8cad6dee88628192ba0411544fb (patch)
tree8ee49d50335420f7df33e7cd9c0a39b83584ba52
parent70d57adc4b08c39e391468369f1a29a532fb9a8e (diff)
downloadmonzero-core-b99d15f08d80a8cad6dee88628192ba0411544fb.tar.gz
monzero-core-b99d15f08d80a8cad6dee88628192ba0411544fb.tar.xz
monzero-core-b99d15f08d80a8cad6dee88628192ba0411544fb.zip
wallet2: reject non-monotonic rct output distributions
-rw-r--r--src/wallet/wallet2.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
index 61f49481e..883e29225 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -9285,6 +9285,8 @@ void wallet2::get_outs(std::vector<std::vector<tools::wallet2::get_outs_entry>>
// check we're clear enough of rct start, to avoid corner cases below
THROW_WALLET_EXCEPTION_IF(rct_offsets.size() <= CRYPTONOTE_DEFAULT_TX_SPENDABLE_AGE,
error::get_output_distribution, "Not enough rct outputs");
+ THROW_WALLET_EXCEPTION_IF(!std::is_sorted(rct_offsets.begin(), rct_offsets.end()),
+ error::get_output_distribution, "Daemon reports non-monotonic rct output distribution");
THROW_WALLET_EXCEPTION_IF(rct_offsets.back() <= max_rct_index,
error::get_output_distribution, "Daemon reports suspicious number of rct outputs");
}