mirror of
https://github.com/XRPLF/rippled.git
synced 2026-06-04 01:06:48 +00:00
fix SponsorshipTransfer
This commit is contained in:
@@ -374,6 +374,14 @@ public:
|
||||
env(pay(alice, sponsor1, drops(1)));
|
||||
env.close();
|
||||
|
||||
// Invalid Owner
|
||||
env(sponsor::transfer(bob, checkId),
|
||||
sponsor::as(sponsor1, tfSponsorReserve),
|
||||
sponsor::sig(sponsor1),
|
||||
ter(tecNO_PERMISSION));
|
||||
env.close();
|
||||
|
||||
// Valid Owner
|
||||
env(sponsor::transfer(alice, checkId),
|
||||
sponsor::as(sponsor1, tfSponsorReserve),
|
||||
sponsor::sig(sponsor1));
|
||||
@@ -1530,7 +1538,7 @@ public:
|
||||
|
||||
// transfer sponsor
|
||||
auto const mptTokenKeylet = keylet::mptoken(mptid, bob);
|
||||
env(sponsor::transfer(alice, mptTokenKeylet.key),
|
||||
env(sponsor::transfer(bob, mptTokenKeylet.key),
|
||||
sponsor::as(sponsor2, tfSponsorReserve),
|
||||
sponsor::sig(sponsor2));
|
||||
env.close();
|
||||
|
||||
@@ -144,9 +144,11 @@ SponsorshipTransfer::preclaim(PreclaimContext const& ctx)
|
||||
if (!sle)
|
||||
return tecNO_ENTRY;
|
||||
|
||||
auto const ownerCountDelta = getLedgerEntryOwnerCount(sle);
|
||||
|
||||
auto const owner =
|
||||
getLedgerEntryOwner(ctx.view, sle, ctx.tx[sfAccount]);
|
||||
if (!owner)
|
||||
if (!owner || owner != ctx.tx[sfAccount])
|
||||
return tecNO_PERMISSION;
|
||||
|
||||
if (newSponsor)
|
||||
@@ -166,14 +168,13 @@ SponsorshipTransfer::preclaim(PreclaimContext const& ctx)
|
||||
return tecNO_PERMISSION;
|
||||
}
|
||||
|
||||
// check account have sufficient balance
|
||||
// check new sponsor have sufficient balance
|
||||
if (auto const ter = checkInsufficientReserve(
|
||||
ctx.view,
|
||||
accSle,
|
||||
accSle->getFieldAmount(sfBalance),
|
||||
newSponsor,
|
||||
// TODO: address variable ownerCount like PriceOracle
|
||||
1);
|
||||
ownerCountDelta);
|
||||
!isTesSuccess(ter))
|
||||
return ter;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user