From f3654fa7cab794552887b8003941467d3273a85a Mon Sep 17 00:00:00 2001 From: Bart <11445373+bthomee@users.noreply.github.com> Date: Wed, 22 Jul 2026 11:15:52 -0400 Subject: [PATCH] Return invalid for bad root nodes --- src/xrpld/app/ledger/detail/TransactionAcquire.cpp | 1 + src/xrpld/overlay/detail/PeerImp.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/xrpld/app/ledger/detail/TransactionAcquire.cpp b/src/xrpld/app/ledger/detail/TransactionAcquire.cpp index d0b10964a3..db99299fd6 100644 --- a/src/xrpld/app/ledger/detail/TransactionAcquire.cpp +++ b/src/xrpld/app/ledger/detail/TransactionAcquire.cpp @@ -208,6 +208,7 @@ TransactionAcquire::takeNodes( { JLOG(journal_.warn()) << "TX acquire got bad root node for TX set " << hash_ << " from peer " << peer->id(); + return SHAMapAddNode::invalid(); } else { diff --git a/src/xrpld/overlay/detail/PeerImp.cpp b/src/xrpld/overlay/detail/PeerImp.cpp index 7ace583dcd..236d5f83db 100644 --- a/src/xrpld/overlay/detail/PeerImp.cpp +++ b/src/xrpld/overlay/detail/PeerImp.cpp @@ -1718,15 +1718,15 @@ PeerImp::onMessage(std::shared_ptr const& m) // of the nodes is consistent - either all use the legacy format or the new format. auto const peerSupportsNodeDepth = peer->supportsFeature(ProtocolFeature::LedgerNodeDepth); - enum class MessageType { unknown, legacy, nodeDepth }; - MessageType messageType = MessageType::unknown; + enum class MessageType { Unknown, Legacy, NodeDepth }; + MessageType messageType = MessageType::Unknown; for (int i = 0; i < m->nodes_size(); ++i) { auto* ledgerNode = m->mutable_nodes(i); MessageType const msgType = - ledgerNode->has_nodeid() ? MessageType::legacy : MessageType::nodeDepth; - if (messageType != MessageType::unknown && messageType != msgType) + ledgerNode->has_nodeid() ? MessageType::Legacy : MessageType::NodeDepth; + if (messageType != MessageType::Unknown && messageType != msgType) { badData( "Received mixed mode message while relaying ledger data for " + @@ -1736,7 +1736,7 @@ PeerImp::onMessage(std::shared_ptr const& m) } messageType = msgType; - if (peerSupportsNodeDepth || msgType == MessageType::legacy) + if (peerSupportsNodeDepth || msgType == MessageType::Legacy) continue; switch (ledgerNode->reference_case())