From 686f9459098d767f728f92d1294fcd76492bbafb Mon Sep 17 00:00:00 2001 From: tequ Date: Wed, 18 Feb 2026 14:46:03 +0900 Subject: [PATCH] audit 6 --- .../tx/transactors/Sponsor/SponsorshipSet.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp b/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp index c893e7ac46..114f6e530e 100644 --- a/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp +++ b/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp @@ -195,8 +195,11 @@ SponsorshipSet::doApply() keylet::ownerDir(sponseeAcc), (*sponsorObjSle)[sfSponseeNode], sponsorObjSle->key(), false); // transfer feeAmount from ledger entry - auto const feeAmount = sponsorObjSle->getFieldAmount(sfFeeAmount); - (*sponsorAccSle)[sfBalance] += feeAmount; + if (sponsorObjSle->isFieldPresent(sfFeeAmount)) + { + auto const feeAmount = sponsorObjSle->getFieldAmount(sfFeeAmount); + (*sponsorAccSle)[sfBalance] += feeAmount; + } ctx_.view().erase(sponsorObjSle); @@ -313,8 +316,11 @@ SponsorshipSet::deleteSponsorship(ApplyView& view, std::shared_ptr const& s if (!sponsorAccSle) return tecINTERNAL; // LCOV_EXCL_LINE - auto const feeAmount = sle->getFieldAmount(sfFeeAmount); - (*sponsorAccSle)[sfBalance] += feeAmount; + if (sle->isFieldPresent(sfFeeAmount)) + { + auto const feeAmount = sle->getFieldAmount(sfFeeAmount); + (*sponsorAccSle)[sfBalance] += feeAmount; + } auto const reserveSponsor = getLedgerEntryReserveSponsor(view, sle); adjustOwnerCount(view, sponsorAccSle, reserveSponsor, -1, j);