Minor cleanup

This commit is contained in:
Bronek Kozicki
2025-05-06 11:38:59 +01:00
parent 4189aa8713
commit 283331b3bd
3 changed files with 32 additions and 41 deletions

View File

@@ -78,21 +78,19 @@ deleteSLE(
AccountID const& account, SField const& node, bool isOwner) -> TER { AccountID const& account, SField const& node, bool isOwner) -> TER {
auto const sleAccount = view.peek(keylet::account(account)); auto const sleAccount = view.peek(keylet::account(account));
if (!sleAccount) if (!sleAccount)
{ { // LCOV_EXCL_START
JLOG(j.fatal()) // LCOV_EXCL_LINE JLOG(j.fatal()) << "Internal error: can't retrieve Owner account.";
<< "Internal error: can't retrieve Owner account."; // LCOV_EXCL_LINE return tecINTERNAL;
return tecINTERNAL; // LCOV_EXCL_LINE } // LCOV_EXCL_STOP
}
// Remove object from owner directory // Remove object from owner directory
std::uint64_t const page = sleCredential->getFieldU64(node); std::uint64_t const page = sleCredential->getFieldU64(node);
if (!view.dirRemove( if (!view.dirRemove(
keylet::ownerDir(account), page, sleCredential->key(), false)) keylet::ownerDir(account), page, sleCredential->key(), false))
{ { // LCOV_EXCL_START
JLOG(j.fatal()) // LCOV_EXCL_LINE JLOG(j.fatal()) << "Unable to delete Credential from owner.";
<< "Unable to delete Credential from owner."; // LCOV_EXCL_LINE return tefBAD_LEDGER;
return tefBAD_LEDGER; // LCOV_EXCL_LINE } // LCOV_EXCL_STOP
}
if (isOwner) if (isOwner)
adjustOwnerCount(view, sleAccount, -1, j); adjustOwnerCount(view, sleAccount, -1, j);

View File

@@ -797,8 +797,7 @@ canTransfer(
ReadView const& view, ReadView const& view,
MPTIssue const& mptIssue, MPTIssue const& mptIssue,
AccountID const& from, AccountID const& from,
AccountID const& to, AccountID const& to);
int depth = 0);
/** Deleter function prototype. Returns the status of the entry deletion /** Deleter function prototype. Returns the status of the entry deletion
* (if should not be skipped) and if the entry should be skipped. The status * (if should not be skipped) and if the entry should be skipped. The status

View File

@@ -195,7 +195,7 @@ bool
isGlobalFrozen(ReadView const& view, MPTIssue const& mptIssue) isGlobalFrozen(ReadView const& view, MPTIssue const& mptIssue)
{ {
if (auto const sle = view.read(keylet::mptIssuance(mptIssue.getMptID()))) if (auto const sle = view.read(keylet::mptIssuance(mptIssue.getMptID())))
return sle->getFlags() & lsfMPTLocked; return sle->isFlag(lsfMPTLocked);
return false; return false;
} }
@@ -240,7 +240,7 @@ isIndividualFrozen(
{ {
if (auto const sle = if (auto const sle =
view.read(keylet::mptoken(mptIssue.getMptID(), account))) view.read(keylet::mptoken(mptIssue.getMptID(), account)))
return sle->getFlags() & lsfMPTLocked; return sle->isFlag(lsfMPTLocked);
return false; return false;
} }
@@ -306,38 +306,32 @@ isVaultPseudoAccountFrozen(
if (!view.rules().enabled(featureSingleAssetVault)) if (!view.rules().enabled(featureSingleAssetVault))
return false; return false;
if (depth >= maxAssetCheckDepth)
return true; // LCOV_EXCL_LINE
auto const mptIssuance = auto const mptIssuance =
view.read(keylet::mptIssuance(mptShare.getMptID())); view.read(keylet::mptIssuance(mptShare.getMptID()));
if (mptIssuance == nullptr) if (mptIssuance == nullptr)
{ return false; // zero MPToken won't block deletion of MPTokenIssuance
UNREACHABLE( // LCOV_EXCL_LINE
"ripple::isVaultPseudoAccountFrozen : null MPTokenIssuance"); // LCOV_EXCL_LINE
return false; // LCOV_EXCL_LINE
}
auto const issuer = mptIssuance->getAccountID(sfIssuer); auto const issuer = mptIssuance->getAccountID(sfIssuer);
auto const mptIssuer = view.read(keylet::account(issuer)); auto const mptIssuer = view.read(keylet::account(issuer));
if (mptIssuer == nullptr) if (mptIssuer == nullptr)
{ { // LCOV_EXCL_START
UNREACHABLE( // LCOV_EXCL_LINE UNREACHABLE("ripple::isVaultPseudoAccountFrozen : null MPToken issuer");
"ripple::isVaultPseudoAccountFrozen : null MPToken issuer"); // LCOV_EXCL_LINE return false;
return false; // LCOV_EXCL_LINE } // LCOV_EXCL_STOP
}
if (!mptIssuer->isFieldPresent(sfVaultID)) if (!mptIssuer->isFieldPresent(sfVaultID))
return false; // not a Vault pseudo-account, common case return false; // not a Vault pseudo-account, common case
if (depth >= maxAssetCheckDepth)
return true; // LCOV_EXCL_LINE
auto const vault = auto const vault =
view.read(keylet::vault(mptIssuer->getFieldH256(sfVaultID))); view.read(keylet::vault(mptIssuer->getFieldH256(sfVaultID)));
if (vault == nullptr) if (vault == nullptr)
{ { // LCOV_EXCL_START
UNREACHABLE( // LCOV_EXCL_LINE UNREACHABLE("ripple::isVaultPseudoAccountFrozen : null vault");
"ripple::isVaultPseudoAccountFrozen : null vault"); // LCOV_EXCL_LINE return false;
return false; // LCOV_EXCL_LINE } // LCOV_EXCL_STOP
}
return isAnyFrozen(view, issuer, account, vault->at(sfAsset), depth + 1); return isAnyFrozen(view, issuer, account, vault->at(sfAsset), depth + 1);
} }
@@ -2299,6 +2293,9 @@ requireAuth(
if (view.rules().enabled(featureSingleAssetVault)) if (view.rules().enabled(featureSingleAssetVault))
{ {
if (depth >= maxAssetCheckDepth)
return tecINTERNAL; // LCOV_EXCL_LINE
// requireAuth is recursive if the issuer is a vault pseudo-account // requireAuth is recursive if the issuer is a vault pseudo-account
auto const sleIssuer = view.read(keylet::account(mptIssuer)); auto const sleIssuer = view.read(keylet::account(mptIssuer));
if (!sleIssuer) if (!sleIssuer)
@@ -2311,9 +2308,6 @@ requireAuth(
if (!sleVault) if (!sleVault)
return tefINTERNAL; // LCOV_EXCL_LINE return tefINTERNAL; // LCOV_EXCL_LINE
if (depth >= maxAssetCheckDepth)
return tecINTERNAL; // LCOV_EXCL_LINE
auto const asset = sleVault->at(sfAsset); auto const asset = sleVault->at(sfAsset);
if (auto const err = std::visit( if (auto const err = std::visit(
[&]<ValidIssueType TIss>(TIss const& issue) { [&]<ValidIssueType TIss>(TIss const& issue) {
@@ -2449,18 +2443,18 @@ enforceMPTokenAuthorization(
return tesSUCCESS; return tesSUCCESS;
} }
UNREACHABLE( // LCOV_EXCL_LINE // LCOV_EXCL_START
"ripple::enforceMPTokenAuthorization : condition list is incomplete"); // LCOV_EXCL_LINE UNREACHABLE(
return tefINTERNAL; // LCOV_EXCL_LINE "ripple::enforceMPTokenAuthorization : condition list is incomplete");
} return tefINTERNAL;
} // LCOV_EXCL_STOP
TER TER
canTransfer( canTransfer(
ReadView const& view, ReadView const& view,
MPTIssue const& mptIssue, MPTIssue const& mptIssue,
AccountID const& from, AccountID const& from,
AccountID const& to, AccountID const& to)
int depth)
{ {
auto const mptID = keylet::mptIssuance(mptIssue.getMptID()); auto const mptID = keylet::mptIssuance(mptIssue.getMptID());
auto const sleIssuance = view.read(mptID); auto const sleIssuance = view.read(mptID);