From 4c6c8a08c9a773ad1f5ca3232533b0e70434d008 Mon Sep 17 00:00:00 2001 From: Bronek Kozicki Date: Thu, 1 May 2025 12:16:11 +0100 Subject: [PATCH] Add LCOV_EXCL_LINE in appropriate locations --- src/xrpld/app/misc/CredentialHelpers.cpp | 16 +++++++------ src/xrpld/app/tx/detail/VaultClawback.cpp | 28 +++++++++++------------ src/xrpld/app/tx/detail/VaultCreate.cpp | 6 ++--- src/xrpld/app/tx/detail/VaultDelete.cpp | 2 +- src/xrpld/app/tx/detail/VaultDeposit.cpp | 7 +++--- src/xrpld/app/tx/detail/VaultSet.cpp | 8 +++---- src/xrpld/app/tx/detail/VaultWithdraw.cpp | 6 ++--- src/xrpld/ledger/detail/View.cpp | 4 ++-- 8 files changed, 39 insertions(+), 38 deletions(-) diff --git a/src/xrpld/app/misc/CredentialHelpers.cpp b/src/xrpld/app/misc/CredentialHelpers.cpp index 263f14da2a..f61c278aed 100644 --- a/src/xrpld/app/misc/CredentialHelpers.cpp +++ b/src/xrpld/app/misc/CredentialHelpers.cpp @@ -79,8 +79,9 @@ deleteSLE( auto const sleAccount = view.peek(keylet::account(account)); if (!sleAccount) { - JLOG(j.fatal()) << "Internal error: can't retrieve Owner account."; - return tecINTERNAL; + JLOG(j.fatal()) // LCOV_EXCL_LINE + << "Internal error: can't retrieve Owner account."; // LCOV_EXCL_LINE + return tecINTERNAL; // LCOV_EXCL_LINE } // Remove object from owner directory @@ -88,8 +89,9 @@ deleteSLE( if (!view.dirRemove( keylet::ownerDir(account), page, sleCredential->key(), false)) { - JLOG(j.fatal()) << "Unable to delete Credential from owner."; - return tefBAD_LEDGER; + JLOG(j.fatal()) // LCOV_EXCL_LINE + << "Unable to delete Credential from owner."; // LCOV_EXCL_LINE + return tefBAD_LEDGER; // LCOV_EXCL_LINE } if (isOwner) @@ -237,13 +239,13 @@ authorizedDepositPreauth( for (auto const& h : credIDs) { auto sleCred = view.read(keylet::credential(h)); - if (!sleCred) // already checked in preclaim - return tefINTERNAL; + if (!sleCred) // already checked in preclaim + return tefINTERNAL; // LCOV_EXCL_LINE auto [it, ins] = sorted.emplace((*sleCred)[sfIssuer], (*sleCred)[sfCredentialType]); if (!ins) - return tefINTERNAL; + return tefINTERNAL; // LCOV_EXCL_LINE lifeExtender.push_back(std::move(sleCred)); } diff --git a/src/xrpld/app/tx/detail/VaultClawback.cpp b/src/xrpld/app/tx/detail/VaultClawback.cpp index 832479da0b..9c190941b7 100644 --- a/src/xrpld/app/tx/detail/VaultClawback.cpp +++ b/src/xrpld/app/tx/detail/VaultClawback.cpp @@ -76,21 +76,21 @@ VaultClawback::preclaim(PreclaimContext const& ctx) auto account = ctx.tx[sfAccount]; auto const issuer = ctx.view.read(keylet::account(account)); if (!issuer) - return tefINTERNAL; // Transactor should have enforced this + return tefINTERNAL; // LCOV_EXCL_LINE - Asset const asset = vault->at(sfAsset); - if (asset.native()) - return tecNO_PERMISSION; // Cannot clawback XRP. - else if (asset.getIssuer() != account) - return tecNO_PERMISSION; // Only issuers can clawback. - - auto const amount = ctx.tx[~sfAmount]; - if (amount && asset != amount->asset()) + Asset const vaultAsset = vault->at(sfAsset); + if (auto const amount = ctx.tx[~sfAmount]; + amount && vaultAsset != amount->asset()) return tecWRONG_ASSET; - if (asset.holds()) + if (vaultAsset.native()) + return tecNO_PERMISSION; // Cannot clawback XRP. + else if (vaultAsset.getIssuer() != account) + return tecNO_PERMISSION; // Only issuers can clawback. + + if (vaultAsset.holds()) { - auto const mpt = asset.get(); + auto const mpt = vaultAsset.get(); auto const mptIssue = ctx.view.read(keylet::mptIssuance(mpt.getMptID())); if (mptIssue == nullptr) @@ -100,7 +100,7 @@ VaultClawback::preclaim(PreclaimContext const& ctx) if (!(issueFlags & lsfMPTCanClawback)) return tecNO_PERMISSION; } - else if (asset.holds()) + else if (vaultAsset.holds()) { std::uint32_t const issuerFlags = issuer->getFieldU32(sfFlags); if (!(issuerFlags & lsfAllowTrustLineClawback) || @@ -117,12 +117,12 @@ VaultClawback::doApply() auto const& tx = ctx_.tx; auto const vault = view().peek(keylet::vault(tx[sfVaultID])); if (!vault) - return tefINTERNAL; // Enforced in preclaim + return tefINTERNAL; // LCOV_EXCL_LINE auto const mptIssuanceID = (*vault)[sfShareMPTID]; auto const sleIssuance = view().read(keylet::mptIssuance(mptIssuanceID)); if (!sleIssuance) - return tefINTERNAL; + return tefINTERNAL; // LCOV_EXCL_LINE Asset const asset = vault->at(sfAsset); STAmount const amount = [&]() -> STAmount { diff --git a/src/xrpld/app/tx/detail/VaultCreate.cpp b/src/xrpld/app/tx/detail/VaultCreate.cpp index 44b4257ed1..b45233d45f 100644 --- a/src/xrpld/app/tx/detail/VaultCreate.cpp +++ b/src/xrpld/app/tx/detail/VaultCreate.cpp @@ -151,7 +151,7 @@ VaultCreate::doApply() auto sequence = tx.getSeqValue(); auto owner = view().peek(keylet::account(account_)); if (owner == nullptr) - return tefINTERNAL; + return tefINTERNAL; // LCOV_EXCL_LINE auto vault = std::make_shared(keylet::vault(account_, sequence)); @@ -164,7 +164,7 @@ VaultCreate::doApply() auto maybePseudo = createPseudoAccount(view(), vault->key(), sfVaultID); if (!maybePseudo) - return maybePseudo.error(); + return maybePseudo.error(); // LCOV_EXCL_LINE auto& pseudo = *maybePseudo; auto pseudoId = pseudo->at(sfAccount); auto asset = tx[sfAsset]; @@ -196,7 +196,7 @@ VaultCreate::doApply() .domainId = tx[~sfDomainID], }); if (!maybeShare) - return maybeShare.error(); + return maybeShare.error(); // LCOV_EXCL_LINE auto& share = *maybeShare; vault->at(sfFlags) = txFlags & tfVaultPrivate; diff --git a/src/xrpld/app/tx/detail/VaultDelete.cpp b/src/xrpld/app/tx/detail/VaultDelete.cpp index 6efcf1d385..bd67f7526a 100644 --- a/src/xrpld/app/tx/detail/VaultDelete.cpp +++ b/src/xrpld/app/tx/detail/VaultDelete.cpp @@ -82,7 +82,7 @@ VaultDelete::doApply() { auto const vault = view().peek(keylet::vault(ctx_.tx[sfVaultID])); if (!vault) - return tefINTERNAL; // Enforced in preclaim + return tefINTERNAL; // LCOV_EXCL_LINE // Destroy the asset holding. auto asset = vault->at(sfAsset); diff --git a/src/xrpld/app/tx/detail/VaultDeposit.cpp b/src/xrpld/app/tx/detail/VaultDeposit.cpp index 433d6d2f69..cc601f1c0f 100644 --- a/src/xrpld/app/tx/detail/VaultDeposit.cpp +++ b/src/xrpld/app/tx/detail/VaultDeposit.cpp @@ -128,15 +128,14 @@ VaultDeposit::doApply() { auto const vault = view().peek(keylet::vault(ctx_.tx[sfVaultID])); if (!vault) - return tefINTERNAL; // Enforced in preclaim + return tefINTERNAL; // LCOV_EXCL_LINE auto const assets = ctx_.tx[sfAmount]; - // Make sure the depositor can hold shares. auto const mptIssuanceID = (*vault)[sfShareMPTID]; auto const sleIssuance = view().read(keylet::mptIssuance(mptIssuanceID)); if (!sleIssuance) - return tefINTERNAL; + return tefINTERNAL; // LCOV_EXCL_LINE auto const& vaultAccount = vault->at(sfAccount); // Note, vault owner is always authorized @@ -208,7 +207,7 @@ VaultDeposit::doApply() FreezeHandling::fhIGNORE_FREEZE, AuthHandling::ahIGNORE_AUTH, j_) < beast::zero) - return tefINTERNAL; + return tefINTERNAL; // LCOV_EXCL_LINE // Transfer shares from vault to depositor. if (auto ter = accountSend( diff --git a/src/xrpld/app/tx/detail/VaultSet.cpp b/src/xrpld/app/tx/detail/VaultSet.cpp index be4c222342..f945b85c99 100644 --- a/src/xrpld/app/tx/detail/VaultSet.cpp +++ b/src/xrpld/app/tx/detail/VaultSet.cpp @@ -83,7 +83,7 @@ VaultSet::preclaim(PreclaimContext const& ctx) auto const mptIssuanceID = (*vault)[sfShareMPTID]; auto const sleIssuance = ctx.view.read(keylet::mptIssuance(mptIssuanceID)); if (!sleIssuance) - return tefINTERNAL; + return tefINTERNAL; // LCOV_EXCL_LINE if (auto const domain = ctx.tx[~sfDomainID]) { @@ -101,7 +101,7 @@ VaultSet::preclaim(PreclaimContext const& ctx) // Sanity check only, this should be enforced by VaultCreate if ((sleIssuance->getFlags() & lsfMPTRequireAuth) == 0) - return tefINTERNAL; + return tefINTERNAL; // LCOV_EXCL_LINE } return tesSUCCESS; @@ -119,12 +119,12 @@ VaultSet::doApply() // Update existing object. auto vault = view().peek(keylet::vault(tx[sfVaultID])); if (!vault) - return tefINTERNAL; // Enforced in preclaim + return tefINTERNAL; // LCOV_EXCL_LINE auto const mptIssuanceID = (*vault)[sfShareMPTID]; auto const sleIssuance = view().peek(keylet::mptIssuance(mptIssuanceID)); if (!sleIssuance) - return tefINTERNAL; + return tefINTERNAL; // LCOV_EXCL_LINE // Update mutable flags and fields if given. if (tx.isFieldPresent(sfData)) diff --git a/src/xrpld/app/tx/detail/VaultWithdraw.cpp b/src/xrpld/app/tx/detail/VaultWithdraw.cpp index 5bc0da7e73..22dde3fa7e 100644 --- a/src/xrpld/app/tx/detail/VaultWithdraw.cpp +++ b/src/xrpld/app/tx/detail/VaultWithdraw.cpp @@ -70,7 +70,7 @@ VaultWithdraw::preclaim(PreclaimContext const& ctx) // Enforce valid withdrawal policy if (vault->at(sfWithdrawalPolicy) != vaultStrategyFirstComeFirstServe) - return tefINTERNAL; + return tefINTERNAL; // LCOV_EXCL_LINE auto const account = ctx.tx[sfAccount]; auto const dstAcct = [&]() -> AccountID { @@ -146,7 +146,7 @@ VaultWithdraw::doApply() assets = sharesToAssetsWithdraw(vault, sleIssuance, shares); } else - return tefINTERNAL; + return tefINTERNAL; // LCOV_EXCL_LINE if (accountHolds( view(), @@ -194,7 +194,7 @@ VaultWithdraw::doApply() FreezeHandling::fhIGNORE_FREEZE, AuthHandling::ahIGNORE_AUTH, j_) < beast::zero) - return tefINTERNAL; + return tefINTERNAL; // LCOV_EXCL_LINE return tesSUCCESS; } diff --git a/src/xrpld/ledger/detail/View.cpp b/src/xrpld/ledger/detail/View.cpp index 34d61e5c63..22596ab4b7 100644 --- a/src/xrpld/ledger/detail/View.cpp +++ b/src/xrpld/ledger/detail/View.cpp @@ -1156,9 +1156,9 @@ addEmptyHolding( auto const sleSrc = view.peek(keylet::account(srcId)); auto const sleDst = view.peek(keylet::account(dstId)); if (!sleDst || !sleSrc) - return tefINTERNAL; + return tefINTERNAL; // LCOV_EXCL_LINE if (!sleSrc->isFlag(lsfDefaultRipple)) - return tecINTERNAL; + return tecINTERNAL; // LCOV_EXCL_LINE // If the line already exists, don't create it again. if (view.read(index)) return tecDUPLICATE;