mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-19 02:25:52 +00:00
Disallow deleting locked MPToken
This commit is contained in:
@@ -621,6 +621,25 @@ class MPToken_test : public beast::unit_test::suite
|
||||
|
||||
// locks up bob's mptoken again
|
||||
mptAlice.set({.account = alice, .holder = bob, .flags = tfMPTLock});
|
||||
if (!features[featureSingleAssetVault])
|
||||
{
|
||||
// Delete bobs' mptoken even though it is locked
|
||||
mptAlice.authorize({.account = bob, .flags = tfMPTUnauthorize});
|
||||
|
||||
mptAlice.set(
|
||||
{.account = alice,
|
||||
.holder = bob,
|
||||
.flags = tfMPTUnlock,
|
||||
.err = tecOBJECT_NOT_FOUND});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Cannot delete locked MPToken
|
||||
mptAlice.authorize(
|
||||
{.account = bob,
|
||||
.flags = tfMPTUnauthorize,
|
||||
.err = tecNO_PERMISSION});
|
||||
|
||||
// alice unlocks mptissuance
|
||||
mptAlice.set({.account = alice, .flags = tfMPTUnlock});
|
||||
@@ -2297,6 +2316,7 @@ public:
|
||||
// MPTokenIssuanceSet
|
||||
testSetValidation(all);
|
||||
testSetEnabled(all);
|
||||
testSetEnabled(all | featureSingleAssetVault);
|
||||
|
||||
// MPT clawback
|
||||
testClawbackValidation(all);
|
||||
|
||||
@@ -164,6 +164,9 @@ MPTokenAuthorize::authorize(
|
||||
return tecOBJECT_NOT_FOUND;
|
||||
if ((*sleMpt)[sfMPTAmount] != 0)
|
||||
return tecHAS_OBLIGATIONS;
|
||||
if (view.rules().enabled(featureSingleAssetVault) &&
|
||||
(sleMpt->getFlags() & lsfMPTLocked))
|
||||
return tecNO_PERMISSION;
|
||||
|
||||
if (!view.dirRemove(
|
||||
keylet::ownerDir(args.accountID),
|
||||
|
||||
Reference in New Issue
Block a user