fix SponsorshipSet Update FeeAmount Lacks Reserve Floor Check

This commit is contained in:
tequ
2026-04-13 15:55:16 +09:00
parent 021eaa81bf
commit 31bc25973a
2 changed files with 20 additions and 0 deletions

View File

@@ -295,6 +295,16 @@ SponsorshipSet::doApply()
(*sponsorObjSle).makeFieldAbsent(sfFeeAmount);
else
(*sponsorObjSle).setFieldAmount(sfFeeAmount, *feeAmount);
if (auto const ret = checkInsufficientReserve(
ctx_.view(),
ctx_.tx,
sponsorAccSle,
STAmount{(*sponsorAccSle)[sfBalance]}.xrp(),
reserveSponsorAccSle,
0);
!isTesSuccess(ret))
return tecUNFUNDED;
}
}

View File

@@ -256,6 +256,16 @@ public:
fee(XRP(1)),
ter(tecUNFUNDED));
env.close();
// Increasing feeAmount to reach insufficient reserve
auto const currentFeeAmount =
env.le(keylet::sponsor(sponsor.id(), alice.id()))->getFieldAmount(sfFeeAmount).xrp();
adjustAccountXRPBalance(env, sponsor, XRP(310));
env(sponsor::set_fee(sponsor, 0, currentFeeAmount + XRP(309)),
sponsor::sponseeAcc(alice),
fee(XRP(1)),
ter(tecUNFUNDED));
env.close();
}
void