From 71e9d78c1b03021d5de7f8ec8be64f49cd259c11 Mon Sep 17 00:00:00 2001 From: Valentin Balaschenko <13349202+vlntb@users.noreply.github.com> Date: Tue, 9 Dec 2025 16:02:53 +0000 Subject: [PATCH] fix and unit-test --- src/test/app/LoanBroker_test.cpp | 13 +++++++++++++ src/xrpld/app/tx/detail/LoanBrokerCoverClawback.cpp | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/test/app/LoanBroker_test.cpp b/src/test/app/LoanBroker_test.cpp index 597e2ea75b..365e204856 100644 --- a/src/test/app/LoanBroker_test.cpp +++ b/src/test/app/LoanBroker_test.cpp @@ -1189,6 +1189,19 @@ class LoanBroker_test : public beast::unit_test::suite return mpt; }, CoverClawback); + + // MPTIssue: + // MPTCanClawback is set but MPTCanLock is not set + testLoanBroker( + [&](Env& env, Account const& issuer, Account const& alice) -> MPT { + MPTTester mpt{env, issuer, mptInitNoFund}; + mpt.create({.flags = tfMPTCanClawback | tfMPTCanTransfer}); + env.close(); + mpt.authorize({.account = alice}); + env.close(); + return mpt; + }, + CoverClawback); } void diff --git a/src/xrpld/app/tx/detail/LoanBrokerCoverClawback.cpp b/src/xrpld/app/tx/detail/LoanBrokerCoverClawback.cpp index 26e978697c..2a5a212211 100644 --- a/src/xrpld/app/tx/detail/LoanBrokerCoverClawback.cpp +++ b/src/xrpld/app/tx/detail/LoanBrokerCoverClawback.cpp @@ -192,7 +192,8 @@ preclaimHelper( if (!sleIssuance) return tecOBJECT_NOT_FOUND; - if (!sleIssuance->isFlag(lsfMPTCanClawback)) + if (!sleIssuance->isFlag(lsfMPTCanClawback) || + !sleIssuance->isFlag(lsfMPTCanLock)) return tecNO_PERMISSION; // With all the checking already done, this should be impossible