Make empty VaultID a temMALFORMED

This commit is contained in:
Bronek Kozicki
2025-03-25 17:54:59 +00:00
parent 372555bda8
commit 05ebd0d8a6
6 changed files with 57 additions and 0 deletions

View File

@@ -101,6 +101,15 @@ class Vault_test : public beast::unit_test::suite
env(tx, ter(temBAD_AMOUNT));
}
{
testcase(prefix + " fail to deposit to zero vaultID");
auto tx = vault.deposit(
{.depositor = depositor,
.id = beast::zero,
.amount = asset(10)});
env(tx, ter(temMALFORMED));
}
{
testcase(prefix + " deposit non-zero amount");
auto tx = vault.deposit(
@@ -147,6 +156,13 @@ class Vault_test : public beast::unit_test::suite
env(tx, ter(tecLIMIT_EXCEEDED));
}
{
testcase(prefix + " fail to set zero vault");
auto tx = vault.set({.owner = owner, .id = beast::zero});
tx[sfAssetMaximum] = asset(150).number();
env(tx, ter(temMALFORMED));
}
{
testcase(prefix + " set maximum higher than current amount");
auto tx = vault.set({.owner = owner, .id = keylet.key});
@@ -253,6 +269,17 @@ class Vault_test : public beast::unit_test::suite
env(tx, code);
}
if (!asset.raw().native())
{
testcase(prefix + " fail to clawback zero vault");
auto tx = vault.clawback(
{.issuer = issuer,
.id = beast::zero,
.holder = depositor,
.amount = asset(10)});
env(tx, ter(temMALFORMED));
}
{
testcase(prefix + " clawback all");
auto code = asset.raw().native() ? ter(tecNO_PERMISSION)
@@ -272,6 +299,15 @@ class Vault_test : public beast::unit_test::suite
env(tx);
}
{
testcase(prefix + " fail to withdraw zero vault");
auto tx = vault.withdraw(
{.depositor = depositor,
.id = beast::zero,
.amount = asset(100)});
env(tx, ter(temMALFORMED));
}
{
testcase(prefix + " withdraw non-zero assets");
auto tx = vault.withdraw(
@@ -287,6 +323,12 @@ class Vault_test : public beast::unit_test::suite
env(tx, ter(tecNO_PERMISSION));
}
{
testcase(prefix + " fail to delete zero vault");
auto tx = vault.del({.owner = owner, .id = beast::zero});
env(tx, ter(temMALFORMED));
}
{
testcase(prefix + " delete empty vault");
auto tx = vault.del({.owner = owner, .id = keylet.key});

View File

@@ -42,6 +42,9 @@ VaultClawback::preflight(PreflightContext const& ctx)
if (ctx.tx.getFlags() & tfUniversalMask)
return temINVALID_FLAG;
if (ctx.tx[sfVaultID] == beast::zero)
return temMALFORMED;
AccountID const issuer = ctx.tx[sfAccount];
AccountID const holder = ctx.tx[sfHolder];

View File

@@ -39,6 +39,9 @@ VaultDelete::preflight(PreflightContext const& ctx)
if (ctx.tx.getFlags() & tfUniversalMask)
return temINVALID_FLAG;
if (ctx.tx[sfVaultID] == beast::zero)
return temMALFORMED;
return preflight2(ctx);
}

View File

@@ -44,6 +44,9 @@ VaultDeposit::preflight(PreflightContext const& ctx)
if (ctx.tx.getFlags() & tfUniversalMask)
return temINVALID_FLAG;
if (ctx.tx[sfVaultID] == beast::zero)
return temMALFORMED;
if (ctx.tx[sfAmount] <= beast::zero)
return temBAD_AMOUNT;

View File

@@ -43,6 +43,9 @@ VaultSet::preflight(PreflightContext const& ctx)
if (auto const ter = preflight1(ctx))
return ter;
if (ctx.tx[sfVaultID] == beast::zero)
return temMALFORMED;
if (ctx.tx.getFlags() & tfUniversalMask)
return temINVALID_FLAG;

View File

@@ -42,6 +42,9 @@ VaultWithdraw::preflight(PreflightContext const& ctx)
if (ctx.tx.getFlags() & tfUniversalMask)
return temINVALID_FLAG;
if (ctx.tx[sfVaultID] == beast::zero)
return temMALFORMED;
if (ctx.tx[sfAmount] <= beast::zero)
return temBAD_AMOUNT;