mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 11:05:54 +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
|
// locks up bob's mptoken again
|
||||||
mptAlice.set({.account = alice, .holder = bob, .flags = tfMPTLock});
|
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
|
// alice unlocks mptissuance
|
||||||
mptAlice.set({.account = alice, .flags = tfMPTUnlock});
|
mptAlice.set({.account = alice, .flags = tfMPTUnlock});
|
||||||
@@ -2297,6 +2316,7 @@ public:
|
|||||||
// MPTokenIssuanceSet
|
// MPTokenIssuanceSet
|
||||||
testSetValidation(all);
|
testSetValidation(all);
|
||||||
testSetEnabled(all);
|
testSetEnabled(all);
|
||||||
|
testSetEnabled(all | featureSingleAssetVault);
|
||||||
|
|
||||||
// MPT clawback
|
// MPT clawback
|
||||||
testClawbackValidation(all);
|
testClawbackValidation(all);
|
||||||
|
|||||||
@@ -164,6 +164,9 @@ MPTokenAuthorize::authorize(
|
|||||||
return tecOBJECT_NOT_FOUND;
|
return tecOBJECT_NOT_FOUND;
|
||||||
if ((*sleMpt)[sfMPTAmount] != 0)
|
if ((*sleMpt)[sfMPTAmount] != 0)
|
||||||
return tecHAS_OBLIGATIONS;
|
return tecHAS_OBLIGATIONS;
|
||||||
|
if (view.rules().enabled(featureSingleAssetVault) &&
|
||||||
|
(sleMpt->getFlags() & lsfMPTLocked))
|
||||||
|
return tecNO_PERMISSION;
|
||||||
|
|
||||||
if (!view.dirRemove(
|
if (!view.dirRemove(
|
||||||
keylet::ownerDir(args.accountID),
|
keylet::ownerDir(args.accountID),
|
||||||
|
|||||||
Reference in New Issue
Block a user