mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 19:15:54 +00:00
fix: Check for empty or zero VaultID in LoanBrokerSet
- Resolves RIPD-4067.
This commit is contained in:
@@ -915,6 +915,17 @@ class LoanBroker_test : public beast::unit_test::suite
|
||||
// test
|
||||
env(jv, txflags(tfFullyCanonicalSig), ter(temINVALID));
|
||||
};
|
||||
auto testZeroVaultID = [&](auto&& getTxJv) {
|
||||
auto jv = getTxJv();
|
||||
// empty broker ID
|
||||
jv[sfVaultID] = "";
|
||||
env(jv, ter(temINVALID));
|
||||
// zero broker ID
|
||||
jv[sfVaultID] = to_string(uint256{});
|
||||
// needs a flag to distinguish the parsed STTx from the prior
|
||||
// test
|
||||
env(jv, txflags(tfFullyCanonicalSig), ter(temINVALID));
|
||||
};
|
||||
|
||||
if (brokerTest == CoverDeposit)
|
||||
{
|
||||
@@ -1058,6 +1069,12 @@ class LoanBroker_test : public beast::unit_test::suite
|
||||
set(alice, vaultInfo.vaultID),
|
||||
loanBrokerID(brokerKeylet.key));
|
||||
});
|
||||
// preflight: temINVALID (empty/zero vault id)
|
||||
testZeroVaultID([&]() {
|
||||
return env.json(
|
||||
set(alice, vaultInfo.vaultID),
|
||||
loanBrokerID(brokerKeylet.key));
|
||||
});
|
||||
|
||||
if (asset.holds<Issue>())
|
||||
{
|
||||
|
||||
@@ -40,6 +40,12 @@ LoanBrokerSet::preflight(PreflightContext const& ctx)
|
||||
return temINVALID;
|
||||
}
|
||||
|
||||
if (auto const vaultID = tx.at(~sfVaultID))
|
||||
{
|
||||
if (*vaultID == beast::zero)
|
||||
return temINVALID;
|
||||
}
|
||||
|
||||
{
|
||||
auto const minimumZero = tx[~sfCoverRateMinimum].value_or(0) == 0;
|
||||
auto const liquidationZero =
|
||||
|
||||
Reference in New Issue
Block a user