File tree Expand file tree Collapse file tree 2 files changed +14
-7
lines changed
Expand file tree Collapse file tree 2 files changed +14
-7
lines changed Original file line number Diff line number Diff line change @@ -321,7 +321,9 @@ class Vault_test : public beast::unit_test::suite
321321 Account const & issuer,
322322 Account const & depositor) -> Asset {
323323 MPTTester mptt{env, issuer, mptInitNoFund};
324- mptt.create ({.flags = tfMPTCanTransfer | tfMPTCanLock});
324+ mptt.create (
325+ {.flags =
326+ tfMPTCanClawback | tfMPTCanTransfer | tfMPTCanLock});
325327 PrettyAsset asset = mptt.issuanceID ();
326328 mptt.authorize ({.account = depositor});
327329 env (pay (issuer, depositor, asset (1000 )));
Original file line number Diff line number Diff line change @@ -85,16 +85,21 @@ VaultClawback::preclaim(PreclaimContext const& ctx)
8585 if (amount && asset != amount->asset ())
8686 return tecWRONG_ASSET;
8787
88- std::uint32_t const issuerFlags = issuer->getFieldU32 (sfFlags);
89-
90- if (asset.holds <Issue>())
88+ if (asset.holds <MPTIssue>())
9189 {
92- if (!(issuerFlags & lsfMPTCanClawback) ||
93- !(issuerFlags & lsfMPTCanLock))
90+ auto const mpt = asset.get <MPTIssue>();
91+ auto const mptIssue =
92+ ctx.view .read (keylet::mptIssuance (mpt.getMptID ()));
93+ if (mptIssue == nullptr )
94+ return tecWRONG_ASSET;
95+
96+ std::uint32_t const issueFlags = mptIssue->getFieldU32 (sfFlags);
97+ if (!(issueFlags & lsfMPTCanClawback) || !(issueFlags & lsfMPTCanLock))
9498 return tecNO_PERMISSION;
9599 }
96- else if (asset.holds <MPTIssue >())
100+ else if (asset.holds <Issue >())
97101 {
102+ std::uint32_t const issuerFlags = issuer->getFieldU32 (sfFlags);
98103 if (!(issuerFlags & lsfAllowTrustLineClawback) ||
99104 (issuerFlags & lsfNoFreeze))
100105 return tecNO_PERMISSION;
You can’t perform that action at this time.
0 commit comments