diff --git a/src/libxrpl/tx/transactors/Sponsor/SponsorshipTransfer.cpp b/src/libxrpl/tx/transactors/Sponsor/SponsorshipTransfer.cpp index 695d1b7c1c..43289e7181 100644 --- a/src/libxrpl/tx/transactors/Sponsor/SponsorshipTransfer.cpp +++ b/src/libxrpl/tx/transactors/Sponsor/SponsorshipTransfer.cpp @@ -411,7 +411,13 @@ SponsorshipTransfer::doApply() auto const setSponsorFieldU32 = [](auto const& sle, auto const& field, auto const& delta) { int32_t const newValue = static_cast(sle->getFieldU32(field)) + delta; - if (newValue <= 0) + + if (newValue < 0) + { + UNREACHABLE("xrpl::SponsorshipTransfer::doApply : Invalid sponsor field value"); + return; + } + else if (newValue == 0) { sle->makeFieldAbsent(field); }