From d1d613da27bdf467b5825f99b327a7287c3c9370 Mon Sep 17 00:00:00 2001 From: tequ Date: Wed, 18 Feb 2026 14:19:40 +0900 Subject: [PATCH] audit 4 --- src/libxrpl/tx/Transactor.cpp | 8 +++++++- src/test/app/Sponsor_test.cpp | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/libxrpl/tx/Transactor.cpp b/src/libxrpl/tx/Transactor.cpp index 5e557ea0fd..20090923c0 100644 --- a/src/libxrpl/tx/Transactor.cpp +++ b/src/libxrpl/tx/Transactor.cpp @@ -157,7 +157,13 @@ Transactor::preflight1(PreflightContext const& ctx, std::uint32_t flagMask) return temINVALID_FLAG; } - if (hasSponsorSig && !hasSponsor) + if (!hasSponsor && hasSponsorFlags) + { + JLOG(ctx.j.debug()) << "preflight1: sponsor flags without sponsor definition"; + return temINVALID_FLAG; + } + + if (!hasSponsor && hasSponsorSig) { JLOG(ctx.j.debug()) << "preflight1: sponsor signature without sponsor definition"; return temMALFORMED; diff --git a/src/test/app/Sponsor_test.cpp b/src/test/app/Sponsor_test.cpp index 0b57f4bfd8..6a619830f7 100644 --- a/src/test/app/Sponsor_test.cpp +++ b/src/test/app/Sponsor_test.cpp @@ -315,6 +315,11 @@ public: // Invalid Flags env(noop(alice), sponsor::as(sponsor, (tfSponsorFee | tfSponsorReserve) + 1), ter(temINVALID_FLAG)); + + // Invalid Flags without sponsor + auto tx = noop(alice); + tx[sfSponsorFlags.jsonName] = tfSponsorFee | tfSponsorReserve; + env(tx, ter(temINVALID_FLAG)); } void