diff --git a/src/xrpld/app/tx/detail/VaultClawback.cpp b/src/xrpld/app/tx/detail/VaultClawback.cpp index d3b7bdd052..e1f8cc98a2 100644 --- a/src/xrpld/app/tx/detail/VaultClawback.cpp +++ b/src/xrpld/app/tx/detail/VaultClawback.cpp @@ -18,10 +18,11 @@ //============================================================================== #include - #include + #include #include +#include #include #include #include @@ -88,9 +89,18 @@ VaultClawback::preclaim(PreclaimContext const& ctx) // If AllowTrustLineClawback is not set or NoFreeze is set, return no // permission - if (!(issuerFlags & lsfAllowTrustLineClawback) || - (issuerFlags & lsfNoFreeze)) - return tecNO_PERMISSION; + if (asset.holds()) + { + if (!(issuerFlags & lsfMPTCanClawback) || + !(issuerFlags & lsfMPTCanLock)) + return tecNO_PERMISSION; + } + else if (asset.holds()) + { + if (!(issuerFlags & lsfAllowTrustLineClawback) || + (issuerFlags & lsfNoFreeze)) + return tecNO_PERMISSION; + } return tesSUCCESS; }