From ac8216152cf7723d39de4d1146cb717b94487c28 Mon Sep 17 00:00:00 2001 From: tecnovert Date: Tue, 9 Jun 2026 21:16:20 +0200 Subject: [PATCH] fix: check if offer matches reverse state for incoming messages --- basicswap/basicswap.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/basicswap/basicswap.py b/basicswap/basicswap.py index 726ad2c..6df281e 100644 --- a/basicswap/basicswap.py +++ b/basicswap/basicswap.py @@ -11136,9 +11136,11 @@ class BasicSwap(BaseApp, BSXNetwork, UIApp): offer_id = bid_data.offer_msg_id offer, xmr_offer = self.getXmrOffer(offer_id) - ensure(offer and offer.was_sent, f"Offer not found: {self.log.id(offer_id)}.") + ensure(offer and offer.was_sent, f"Offer not found: {self.log.id(offer_id)}") ensure(offer.swap_type == SwapTypes.XMR_SWAP, "Bid/offer swap type mismatch") - ensure(xmr_offer, f"Adaptor-sig offer not found: {self.log.id(offer_id)}.") + ensure(xmr_offer, f"Adaptor-sig offer not found: {self.log.id(offer_id)}") + reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from, offer.coin_to) + ensure(reverse_bid is False, f"Offer: {self.log.id(offer_id)} is reversed") ci_from = self.ci(offer.coin_from) ci_to = self.ci(offer.coin_to) @@ -12772,9 +12774,11 @@ class BasicSwap(BaseApp, BSXNetwork, UIApp): offer_id = bid_data.offer_msg_id offer, xmr_offer = self.getXmrOffer(offer_id) - ensure(offer and offer.was_sent, f"Offer not found: {self.log.id(offer_id)}.") + ensure(offer and offer.was_sent, f"Offer not found: {self.log.id(offer_id)}") ensure(offer.swap_type == SwapTypes.XMR_SWAP, "Bid/offer swap type mismatch") - ensure(xmr_offer, f"Adaptor-sig offer not found: {self.log.id(offer_id)}.") + ensure(xmr_offer, f"Adaptor-sig offer not found: {self.log.id(offer_id)}") + reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from, offer.coin_to) + ensure(reverse_bid is True, f"Offer: {self.log.id(offer_id)} not reversed") self.validateMessageNets(bid_data.message_nets) @@ -12889,12 +12893,14 @@ class BasicSwap(BaseApp, BSXNetwork, UIApp): bid_id = msg_data.bid_msg_id bid, xmr_swap = self.getXmrBid(bid_id) - ensure(bid, f"Bid not found: {self.log.id(bid_id)}.") - ensure(xmr_swap, f"Adaptor-sig swap not found: {self.log.id(bid_id)}.") + ensure(bid, f"Bid not found: {self.log.id(bid_id)}") + ensure(xmr_swap, f"Adaptor-sig swap not found: {self.log.id(bid_id)}") offer, xmr_offer = self.getXmrOffer(bid.offer_id) - ensure(offer, f"Offer not found: {self.log.id(bid.offer_id)}.") - ensure(xmr_offer, f"Adaptor-sig offer not found: {self.log.id(bid.offer_id)}.") + ensure(offer, f"Offer not found: {self.log.id(bid.offer_id)}") + ensure(xmr_offer, f"Adaptor-sig offer not found: {self.log.id(bid.offer_id)}") + reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from, offer.coin_to) + ensure(reverse_bid is True, f"Offer: {self.log.id(bid.offer_id)} not reversed") ensure(msg["to"] == bid.bid_addr, "Received on incorrect address") ensure(msg["from"] == offer.addr_from, "Sent from incorrect address")