From 0a4bbffc4eecd22f72e334873dc89d1805cc9f19 Mon Sep 17 00:00:00 2001 From: 0xaudron Date: Tue, 28 Jul 2026 10:31:04 +0600 Subject: [PATCH] Reject out-of-range push_asset_amount in handle_funding --- lightning/src/rgb_utils/mod.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lightning/src/rgb_utils/mod.rs b/lightning/src/rgb_utils/mod.rs index 2973bc762..b83579ad3 100644 --- a/lightning/src/rgb_utils/mod.rs +++ b/lightning/src/rgb_utils/mod.rs @@ -664,11 +664,16 @@ pub(crate) fn handle_funding( _ => unreachable!("unsupported schema"), }; let push_amount = push_asset_amount.unwrap_or(0); + let remote_rgb_amount = channel_rgb_amount.checked_sub(push_amount).ok_or_else(|| { + ChannelError::close(format!( + "push_asset_amount {push_amount} exceeds channel asset amount {channel_rgb_amount}" + )) + })?; let rgb_info = RgbInfo { contract_id: consignment.contract_id(), schema: AssetSchema::from_schema_id(consignment.schema_id()).unwrap(), local_rgb_amount: push_amount, - remote_rgb_amount: channel_rgb_amount - push_amount, + remote_rgb_amount, batch_transfer_idx: None, // only meaningful on the initiator side, which is the one that sends media counterparty_knows_asset: false,