Skip to content

Backports [release-v0.19] - #11015

Draft
tobtoht wants to merge 68 commits into
monero-project:release-v0.19from
tobtoht:backports-v0.19
Draft

tobtoht wants to merge 68 commits into
monero-project:release-v0.19from
tobtoht:backports-v0.19

Conversation

@tobtoht

@tobtoht tobtoht commented Jul 31, 2026 •

Copy link
Copy Markdown
Collaborator

@jpk68

jpk68 commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Apologies if this isn't the best place to ask - would it work to backport some of the hardware wallet-related fixes I submitted recently?

These would include #10984, #10983, #10982, #10978, #10977, and #10976.

@tobtoht

tobtoht commented Aug 1, 2026 •

Copy link
Copy Markdown
Collaborator Author

Yes, after a fix (with needs backport label) is merged into master it will be added here.

selsta and others added 25 commits August 1, 2026 17:12
Use mdb_stat on the active table instead of environment-wide
statistics when estimating copy size. This prevents resizing
decisions from being based on the wrong database.
Fixes the following circumstance:
1. Wallet submits tx to node.
2. Node adds tx to pool and queues for relay.
3. Node shuts off before the relay executes in the strand.
4. Node restarts.
5. Now, the fix ensures the node will re-relay the tx in the
get_relayable_transactions loop.

Also makes sure that stem txs don't have last_relayed_time set
to max, which would prevent them from ever being re-relayed on
a restart as well.

Context: seraphis-migration#365 (comment)
- We select peers to relay to based on their latest known sync height.
- This change:
A) makes sure to update the peer's latest known sync height upon
validating the peer's newly relayed blocks.
B) Allows for a wider window so that if we haven't yet received the
peer's block or finished validating it, then the peer can still be
a valid candidate to receive our new txs.
Identified by @selsta

Callers can otherwise misinterpret int -1 as truthy success,
e.g. see make_payload_send_txs
Round requested LMDB map sizes upward to the next page boundary.
This avoids producing incorrectly aligned map sizes when the
requested size is not already page-aligned.
Display the first non-zero change address after verifying that all
effective change uses the same address. Foreign change is already
rejected during signing, so this only fixes misleading display.

Reported by xmrack and the MAGIC Monero Fund.
selsta and others added 16 commits August 28, 2026 10:09
Reported by zkao, a tool by zkSecurity
In RPC calls `get_blocks.bin` and `get_transactions`:
  1. Skip deserializing then re-serializing tx blobs
  2. Provide full unpruned transaction from mempool in `get_transactions` when `!req.prune`
  3. Change `on_get_transactions()` response sort time from O(N^2) to O(N)
  4. Generally improve memory usage and lookups in `on_get_transactions()`

Reviewed-by: selsta <selsta@sent.at>
Reviewed-by: j-berman <justinberman@protonmail.com>
Reviewed-by: jpk68 <jpk68@tutanota.com>
The URI parser treats '=' as the parameter delimiter, so leaving it raw in text fields makes make_uri output fail to parse
…outputs

estimate_rct_tx_size() and estimate_tx_weight() compute the Bulletproof padded
output count with `while ((1<<log_padded_outputs) < n_outputs)`, shifting a
signed int. For n_outputs > 2^30 this reaches `1 << 31` (signed overflow, UB),
and once the shift count exceeds the int width the value cycles and never
reaches n_outputs, so the loop never terminates. estimate_tx_size_and_weight()
accepts n_outputs up to INT_MAX (only negative is rejected), so a single
wallet-rpc call spins the handling thread forever.

Shift an unsigned 64-bit one and compare in uint64_t at all three shift sites,
and accumulate the estimated size in size_t (cast the per-input and per-output
terms) so the size arithmetic cannot overflow for large counts.
There are duplicate 'amount' headers when using export_transfers all. Column five represents the transaction total while column eleven represents the amount transferred per destination.

Rename the columns without changing their order or values.

(cherry picked from commit 30ab49d)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.